Autogenerated HTML docs for v1.9-rc0 
diff --git a/technical/api-allocation-growing.html b/technical/api-allocation-growing.html index 966a10f..fce0554 100644 --- a/technical/api-allocation-growing.html +++ b/technical/api-allocation-growing.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>allocation growing API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -741,30 +745,30 @@  <div class="ulist"><ul>   <li>   <p>  -a pointer (<code>item</code>) that points at the array, initialized to <code>NULL</code>  +a pointer (<tt>item</tt>) that points at the array, initialized to <tt>NULL</tt>   (although please name the variable based on its contents, not on its   type);   </p>   </li>   <li>   <p>  -an integer variable (<code>alloc</code>) that keeps track of how big the current  - allocation is, initialized to <code>0</code>;  +an integer variable (<tt>alloc</tt>) that keeps track of how big the current  + allocation is, initialized to <tt>0</tt>;   </p>   </li>   <li>   <p>  -another integer variable (<code>nr</code>) to keep track of how many elements the  - array currently has, initialized to <code>0</code>.  +another integer variable (<tt>nr</tt>) to keep track of how many elements the  + array currently has, initialized to <tt>0</tt>.   </p>   </li>   </ul></div>  -<div class="paragraph"><p>Then before adding <code>n`th element to the item, call `ALLOC_GROW(item, n,  -alloc)</code>. This ensures that the array can hold at least <code>n</code> elements by  -calling <code>realloc(3)</code> and adjusting <code>alloc</code> variable.</p></div>  +<div class="paragraph"><p>Then before adding <tt>n`th element to the item, call `ALLOC_GROW(item, n,  +alloc)</tt>. This ensures that the array can hold at least <tt>n</tt> elements by  +calling <tt>realloc(3)</tt> and adjusting <tt>alloc</tt> variable.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>sometype *item;  +<pre><tt>sometype *item;   size_t nr;   size_t alloc    @@ -774,9 +778,9 @@    /* we did not like any existing one, so add one */   ALLOC_GROW(item, nr + 1, alloc);  -item[nr++] = value you like;</code></pre>  +item[nr++] = value you like;</tt></pre>   </div></div>  -<div class="paragraph"><p>You are responsible for updating the <code>nr</code> variable.</p></div>  +<div class="paragraph"><p>You are responsible for updating the <tt>nr</tt> variable.</p></div>   </div>   </div>   </div>  diff --git a/technical/api-argv-array.html b/technical/api-argv-array.html index dcfd966..8ea0f81 100644 --- a/technical/api-argv-array.html +++ b/technical/api-argv-array.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>argv-array API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -738,15 +742,15 @@  <div class="sectionbody">   <div class="paragraph"><p>The argv-array API allows one to dynamically build and store   NULL-terminated lists. An argv-array maintains the invariant that the  -<code>argv</code> member always points to a non-NULL array, and that the array is  -always NULL-terminated at the element pointed to by <code>argv[argc]</code>. This  +<tt>argv</tt> member always points to a non-NULL array, and that the array is  +always NULL-terminated at the element pointed to by <tt>argv[argc]</tt>. This   makes the result suitable for passing to functions expecting to receive   argv from main(), or the <a href="api-run-command.html">run-command API</a>.</p></div>   <div class="paragraph"><p>The <a href="api-string-list.html">string-list API</a> is similar, but cannot be   used for these purposes; instead of storing a straight string pointer,  -it contains an item structure with a <code>util</code> field that is not compatible  +it contains an item structure with a <tt>util</tt> field that is not compatible   with the traditional argv interface.</p></div>  -<div class="paragraph"><p>Each <code>argv_array</code> manages its own memory. Any strings pushed into the  +<div class="paragraph"><p>Each <tt>argv_array</tt> manages its own memory. Any strings pushed into the   array are duplicated, and all memory is freed by argv_array_clear().</p></div>   </div>   </div>  @@ -755,13 +759,13 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct argv_array</code>  +<tt>struct argv_array</tt>   </dt>   <dd>   <p>   A single array. This should be initialized by assignment from  - <code>ARGV_ARRAY_INIT</code>, or by calling <code>argv_array_init</code>. The <code>argv</code>  - member contains the actual array; the <code>argc</code> member contains the  + <tt>ARGV_ARRAY_INIT</tt>, or by calling <tt>argv_array_init</tt>. The <tt>argv</tt>  + member contains the actual array; the <tt>argc</tt> member contains the   number of elements in the array, not including the terminating   NULL.   </p>  @@ -774,16 +778,16 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>argv_array_init</code>  +<tt>argv_array_init</tt>   </dt>   <dd>   <p>   Initialize an array. This is no different than assigning from  - <code>ARGV_ARRAY_INIT</code>.  + <tt>ARGV_ARRAY_INIT</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_push</code>  +<tt>argv_array_push</tt>   </dt>   <dd>   <p>  @@ -791,26 +795,26 @@  </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_pushl</code>  +<tt>argv_array_pushl</tt>   </dt>   <dd>   <p>   Push a list of strings onto the end of the array. The arguments  - should be a list of <code>const char *</code> strings, terminated by a NULL  + should be a list of <tt>const char *</tt> strings, terminated by a NULL   argument.   </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_pushf</code>  +<tt>argv_array_pushf</tt>   </dt>   <dd>   <p>   Format a string and push it onto the end of the array. This is a  - convenience wrapper combining <code>strbuf_addf</code> and <code>argv_array_push</code>.  + convenience wrapper combining <tt>strbuf_addf</tt> and <tt>argv_array_push</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_pop</code>  +<tt>argv_array_pop</tt>   </dt>   <dd>   <p>  @@ -819,7 +823,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_clear</code>  +<tt>argv_array_clear</tt>   </dt>   <dd>   <p>  @@ -828,20 +832,20 @@  </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_detach</code>  +<tt>argv_array_detach</tt>   </dt>   <dd>   <p>  - Detach the argv array from the <code>struct argv_array</code>, transferring  + Detach the argv array from the <tt>struct argv_array</tt>, transferring   ownership of the allocated array and strings.   </p>   </dd>   <dt class="hdlist1">  -<code>argv_array_free_detached</code>  +<tt>argv_array_free_detached</tt>   </dt>   <dd>   <p>  - Free the memory allocated by a <code>struct argv_array</code> that was later  + Free the memory allocated by a <tt>struct argv_array</tt> that was later   detached and is now no longer needed.   </p>   </dd>  diff --git a/technical/api-builtin.html b/technical/api-builtin.html index 55c3914..99a3cc1 100644 --- a/technical/api-builtin.html +++ b/technical/api-builtin.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>builtin API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -742,32 +746,32 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Define the implementation of the built-in command <code>foo</code> with  +Define the implementation of the built-in command <tt>foo</tt> with   signature:   </p>   <div class="literalblock">   <div class="content">  -<pre><code>int cmd_foo(int argc, const char **argv, const char *prefix);</code></pre>  +<pre><tt>int cmd_foo(int argc, const char **argv, const char *prefix);</tt></pre>   </div></div>   </li>   <li>   <p>  -Add the external declaration for the function to <code>builtin.h</code>.  +Add the external declaration for the function to <tt>builtin.h</tt>.   </p>   </li>   <li>   <p>  -Add the command to the <code>commands[]</code> table defined in <code>git.c</code>.  +Add the command to the <tt>commands[]</tt> table defined in <tt>git.c</tt>.   The entry should look like:   </p>   <div class="literalblock">   <div class="content">  -<pre><code>{ "foo", cmd_foo, <options> },</code></pre>  +<pre><tt>{ "foo", cmd_foo, <options> },</tt></pre>   </div></div>   <div class="paragraph"><p>where options is the bitwise-or of:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>RUN_SETUP</code>  +<tt>RUN_SETUP</tt>   </dt>   <dd>   <p>  @@ -778,7 +782,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>USE_PAGER</code>  +<tt>USE_PAGER</tt>   </dt>   <dd>   <p>  @@ -787,43 +791,43 @@  </p>   </dd>   <dt class="hdlist1">  -<code>NEED_WORK_TREE</code>  +<tt>NEED_WORK_TREE</tt>   </dt>   <dd>   <p>   Make sure there is a work tree, i.e. the command cannot act   on bare repositories.  - This only makes sense when <code>RUN_SETUP</code> is also set.  + This only makes sense when <tt>RUN_SETUP</tt> is also set.   </p>   </dd>   </dl></div>   </li>   <li>   <p>  -Add <code>builtin/foo.o</code> to <code>BUILTIN_OBJS</code> in <code>Makefile</code>.  +Add <tt>builtin/foo.o</tt> to <tt>BUILTIN_OBJS</tt> in <tt>Makefile</tt>.   </p>   </li>   </ol></div>  -<div class="paragraph"><p>Additionally, if <code>foo</code> is a new command, there are 3 more things to do:</p></div>  +<div class="paragraph"><p>Additionally, if <tt>foo</tt> is a new command, there are 3 more things to do:</p></div>   <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Add tests to <code>t/</code> directory.  +Add tests to <tt>t/</tt> directory.   </p>   </li>   <li>   <p>  -Write documentation in <code>Documentation/git-foo.txt</code>.  +Write documentation in <tt>Documentation/git-foo.txt</tt>.   </p>   </li>   <li>   <p>  -Add an entry for <code>git-foo</code> to <code>command-list.txt</code>.  +Add an entry for <tt>git-foo</tt> to <tt>command-list.txt</tt>.   </p>   </li>   <li>   <p>  -Add an entry for <code>/git-foo</code> to <code>.gitignore</code>.  +Add an entry for <tt>/git-foo</tt> to <tt>.gitignore</tt>.   </p>   </li>   </ol></div>  @@ -832,16 +836,16 @@  <div class="sect1">   <h2 id="_how_a_built_in_is_called">How a built-in is called</h2>   <div class="sectionbody">  -<div class="paragraph"><p>The implementation <code>cmd_foo()</code> takes three parameters, <code>argc</code>, <code>argv,  -and `prefix</code>. The first two are similar to what <code>main()</code> of a  +<div class="paragraph"><p>The implementation <tt>cmd_foo()</tt> takes three parameters, <tt>argc</tt>, <tt>argv,  +and `prefix</tt>. The first two are similar to what <tt>main()</tt> of a   standalone command would be called with.</p></div>  -<div class="paragraph"><p>When <code>RUN_SETUP</code> is specified in the <code>commands[]</code> table, and when you  -were started from a subdirectory of the work tree, <code>cmd_foo()</code> is called  -after chdir(2) to the top of the work tree, and <code>prefix</code> gets the path  +<div class="paragraph"><p>When <tt>RUN_SETUP</tt> is specified in the <tt>commands[]</tt> table, and when you  +were started from a subdirectory of the work tree, <tt>cmd_foo()</tt> is called  +after chdir(2) to the top of the work tree, and <tt>prefix</tt> gets the path   to the subdirectory the command started from. This allows you to   convert a user-supplied pathname (typically relative to that directory)   to a pathname relative to the top of the work tree.</p></div>  -<div class="paragraph"><p>The return value from <code>cmd_foo()</code> becomes the exit status of the  +<div class="paragraph"><p>The return value from <tt>cmd_foo()</tt> becomes the exit status of the   command.</p></div>   </div>   </div>  diff --git a/technical/api-config.html b/technical/api-config.html index e8cc287..da2e063 100644 --- a/technical/api-config.html +++ b/technical/api-config.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>config API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -757,7 +761,7 @@  the name of the parsed variable. This is in canonical "flat" form: the   section, subsection, and variable segments will be separated by dots,   and the section and variable segments will be all lowercase. E.g.,  - <code>core.ignorecase</code>, <code>diff.SomeType.textconv</code>.  + <tt>core.ignorecase</tt>, <tt>diff.SomeType.textconv</tt>.   </p>   </li>   <li>  @@ -783,44 +787,44 @@  <div class="sectionbody">   <div class="paragraph"><p>Most programs will simply want to look up variables in all config files   that Git knows about, using the normal precedence rules. To do this,  -call <code>git_config</code> with a callback function and void data pointer.</p></div>  -<div class="paragraph"><p><code>git_config</code> will read all config sources in order of increasing  +call <tt>git_config</tt> with a callback function and void data pointer.</p></div>  +<div class="paragraph"><p><tt>git_config</tt> will read all config sources in order of increasing   priority. Thus a callback should typically overwrite previously-seen  -entries with new ones (e.g., if both the user-wide <code>~/.gitconfig</code> and  -repo-specific <code>.git/config</code> contain <code>color.ui</code>, the config machinery  +entries with new ones (e.g., if both the user-wide <tt>~/.gitconfig</tt> and  +repo-specific <tt>.git/config</tt> contain <tt>color.ui</tt>, the config machinery   will first feed the user-wide one to the callback, and then the   repo-specific one; by overwriting, the higher-priority repo-specific   value is left at the end).</p></div>  -<div class="paragraph"><p>The <code>git_config_with_options</code> function lets the caller examine config  -while adjusting some of the default behavior of <code>git_config</code>. It should  +<div class="paragraph"><p>The <tt>git_config_with_options</tt> function lets the caller examine config  +while adjusting some of the default behavior of <tt>git_config</tt>. It should   almost never be used by "regular" Git code that is looking up   configuration variables. It is intended for advanced callers like  -<code>git-config</code>, which are intentionally tweaking the normal config-lookup  +<tt>git-config</tt>, which are intentionally tweaking the normal config-lookup   process. It takes two extra parameters:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>filename</code>  +<tt>filename</tt>   </dt>   <dd>   <p>   If this parameter is non-NULL, it specifies the name of a file to   parse for configuration, rather than looking in the usual files. Regular  -<code>git_config</code> defaults to <code>NULL</code>.  +<tt>git_config</tt> defaults to <tt>NULL</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>respect_includes</code>  +<tt>respect_includes</tt>   </dt>   <dd>   <p>   Specify whether include directives should be followed in parsed files.  -Regular <code>git_config</code> defaults to <code>1</code>.  +Regular <tt>git_config</tt> defaults to <tt>1</tt>.   </p>   </dd>   </dl></div>  -<div class="paragraph"><p>There is a special version of <code>git_config</code> called <code>git_config_early</code>.  +<div class="paragraph"><p>There is a special version of <tt>git_config</tt> called <tt>git_config_early</tt>.   This version takes an additional parameter to specify the repository  -config, instead of having it looked up via <code>git_path</code>. This is useful  +config, instead of having it looked up via <tt>git_path</tt>. This is useful   early in a Git program before the repository has been found. Unless   you’re working with early setup code, you probably don’t want to use   this.</p></div>  @@ -830,8 +834,8 @@  <h2 id="_reading_specific_files">Reading Specific Files</h2>   <div class="sectionbody">   <div class="paragraph"><p>To read a specific file in git-config format, use  -<code>git_config_from_file</code>. This takes the same callback and data parameters  -as <code>git_config</code>.</p></div>  +<tt>git_config_from_file</tt>. This takes the same callback and data parameters  +as <tt>git_config</tt>.</p></div>   </div>   </div>   <div class="sect1">  @@ -841,7 +845,7 @@  a number of helper functions, including:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>git_config_int</code>  +<tt>git_config_int</tt>   </dt>   <dd>   <p>  @@ -850,15 +854,15 @@  </p>   </dd>   <dt class="hdlist1">  -<code>git_config_ulong</code>  +<tt>git_config_ulong</tt>   </dt>   <dd>   <p>  -Identical to <code>git_config_int</code>, but for unsigned longs.  +Identical to <tt>git_config_int</tt>, but for unsigned longs.   </p>   </dd>   <dt class="hdlist1">  -<code>git_config_bool</code>  +<tt>git_config_bool</tt>   </dt>   <dd>   <p>  @@ -869,38 +873,38 @@  </p>   </dd>   <dt class="hdlist1">  -<code>git_config_bool_or_int</code>  +<tt>git_config_bool_or_int</tt>   </dt>   <dd>   <p>  -Same as <code>git_config_bool</code>, except that integers are returned as-is, and  -an <code>is_bool</code> flag is unset.  +Same as <tt>git_config_bool</tt>, except that integers are returned as-is, and  +an <tt>is_bool</tt> flag is unset.   </p>   </dd>   <dt class="hdlist1">  -<code>git_config_maybe_bool</code>  +<tt>git_config_maybe_bool</tt>   </dt>   <dd>   <p>  -Same as <code>git_config_bool</code>, except that it returns -1 on error rather  +Same as <tt>git_config_bool</tt>, except that it returns -1 on error rather   than dying.   </p>   </dd>   <dt class="hdlist1">  -<code>git_config_string</code>  +<tt>git_config_string</tt>   </dt>   <dd>   <p>  -Allocates and copies the value string into the <code>dest</code> parameter; if no  +Allocates and copies the value string into the <tt>dest</tt> parameter; if no   string is given, prints an error message and returns -1.   </p>   </dd>   <dt class="hdlist1">  -<code>git_config_pathname</code>  +<tt>git_config_pathname</tt>   </dt>   <dd>   <p>  -Similar to <code>git_config_string</code>, but expands <code>~</code> or <code>~user</code> into the  +Similar to <tt>git_config_string</tt>, but expands <tt>~</tt> or <tt>~user</tt> into the   user’s home directory when found at the beginning of the path.   </p>   </dd>  @@ -911,22 +915,22 @@  <h2 id="_include_directives">Include Directives</h2>   <div class="sectionbody">   <div class="paragraph"><p>By default, the config parser does not respect include directives.  -However, a caller can use the special <code>git_config_include</code> wrapper  +However, a caller can use the special <tt>git_config_include</tt> wrapper   callback to support them. To do so, you simply wrap your "real" callback  -function and data pointer in a <code>struct config_include_data</code>, and pass  +function and data pointer in a <tt>struct config_include_data</tt>, and pass   the wrapper to the regular config-reading functions. For example:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>int read_file_with_include(const char *file, config_fn_t fn, void *data)  +<pre><tt>int read_file_with_include(const char *file, config_fn_t fn, void *data)   {   struct config_include_data inc = CONFIG_INCLUDE_INIT;   inc.fn = fn;   inc.data = data;   return git_config_from_file(git_config_include, file, &inc);  -}</code></pre>  +}</tt></pre>   </div></div>  -<div class="paragraph"><p><code>git_config</code> respects includes automatically. The lower-level  -<code>git_config_from_file</code> does not.</p></div>  +<div class="paragraph"><p><tt>git_config</tt> respects includes automatically. The lower-level  +<tt>git_config_from_file</tt> does not.</p></div>   </div>   </div>   <div class="sect1">  diff --git a/technical/api-credentials.html b/technical/api-credentials.html index ca1adac..b736669 100644 --- a/technical/api-credentials.html +++ b/technical/api-credentials.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>credentials API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -753,7 +757,7 @@  <div class="sectionbody">   <div class="listingblock">   <div class="content">  -<pre><code>+-----------------------+  +<pre><tt>+-----------------------+   | Git code (C) |--- to server requiring --->   | | authentication   |.......................|  @@ -764,7 +768,7 @@  | v   +-----------------------+   | Git credential helper |  -+-----------------------+</code></pre>  ++-----------------------+</tt></pre>   </div></div>   <div class="paragraph"><p>The Git code (typically a remote-helper) will call the C API to obtain   credential data like a login/password pair (credential_fill). The  @@ -789,7 +793,7 @@  <h3 id="_data_structures">Data Structures</h3>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct credential</code>  +<tt>struct credential</tt>   </dt>   <dd>   <p>  @@ -800,15 +804,15 @@  their counterparts in the helper protocol; see the section below   for a description of each field.   </p>  -<div class="paragraph"><p>The <code>helpers</code> member of the struct is a <code>string_list</code> of helpers. Each  +<div class="paragraph"><p>The <tt>helpers</tt> member of the struct is a <tt>string_list</tt> of helpers. Each   string specifies an external helper which will be run, in order, to   either acquire or store credentials. See the section on credential   helpers below. This list is filled-in by the API functions   according to the corresponding configuration variables before   consulting helpers, so there usually is no need for a caller to   modify the helpers field at all.</p></div>  -<div class="paragraph"><p>This struct should always be initialized with <code>CREDENTIAL_INIT</code> or  -<code>credential_init</code>.</p></div>  +<div class="paragraph"><p>This struct should always be initialized with <tt>CREDENTIAL_INIT</tt> or  +<tt>credential_init</tt>.</p></div>   </dd>   </dl></div>   </div>  @@ -816,7 +820,7 @@  <h3 id="_functions">Functions</h3>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>credential_init</code>  +<tt>credential_init</tt>   </dt>   <dd>   <p>  @@ -824,7 +828,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>credential_clear</code>  +<tt>credential_clear</tt>   </dt>   <dd>   <p>  @@ -833,7 +837,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>credential_fill</code>  +<tt>credential_fill</tt>   </dt>   <dd>   <p>  @@ -846,7 +850,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>credential_reject</code>  +<tt>credential_reject</tt>   </dt>   <dd>   <p>  @@ -856,12 +860,12 @@  example, to purge the invalid credentials from storage). It   will also free() the username and password fields of the   credential and set them to NULL (readying the credential for  - another call to <code>credential_fill</code>). Any errors from helpers are  + another call to <tt>credential_fill</tt>). Any errors from helpers are   ignored.   </p>   </dd>   <dt class="hdlist1">  -<code>credential_approve</code>  +<tt>credential_approve</tt>   </dt>   <dd>   <p>  @@ -873,7 +877,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>credential_from_url</code>  +<tt>credential_from_url</tt>   </dt>   <dd>   <p>  @@ -888,7 +892,7 @@  used to login to a fictitious "foo" service on a remote host:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>int foo_login(struct foo_connection *f)  +<pre><tt>int foo_login(struct foo_connection *f)   {   int status;   /*  @@ -933,7 +937,7 @@  credential_clear(&c);     return status;  -}</code></pre>  +}</tt></pre>   </div></div>   </div>   </div>  @@ -946,7 +950,7 @@  longer than a single Git process; e.g., credentials may be stored   in-memory for a few minutes, or indefinitely on disk).</p></div>   <div class="paragraph"><p>Each helper is specified by a single string in the configuration  -variable <code>credential.helper</code> (and others, see <a href="../git-config.html">git-config(1)</a>).  +variable <tt>credential.helper</tt> (and others, see <a href="../git-config.html">git-config(1)</a>).   The string is transformed by Git into a command to be executed using   these rules:</p></div>   <div class="olist arabic"><ol class="arabic">  @@ -974,7 +978,7 @@  <div class="paragraph"><p>Here are some example specifications:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code># run "git credential-foo"  +<pre><tt># run "git credential-foo"   foo     # same as above, but pass an argument to the helper  @@ -988,18 +992,18 @@  /path/to/my/helper --with-arguments     # or you can specify your own shell snippet  -!f() { echo "password=`cat $HOME/.secret`"; }; f</code></pre>  +!f() { echo "password=`cat $HOME/.secret`"; }; f</tt></pre>   </div></div>   <div class="paragraph"><p>Generally speaking, rule (3) above is the simplest for users to specify.   Authors of credential helpers should make an effort to assist their   users by naming their program "git-credential-$NAME", and putting it in   the $PATH or $GIT_EXEC_PATH during installation, which will allow a user  -to enable it with <code>git config credential.helper $NAME</code>.</p></div>  +to enable it with <tt>git config credential.helper $NAME</tt>.</p></div>   <div class="paragraph"><p>When a helper is executed, it will have one "operation" argument   appended to its command line, which is one of:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>get</code>  +<tt>get</tt>   </dt>   <dd>   <p>  @@ -1007,7 +1011,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>store</code>  +<tt>store</tt>   </dt>   <dd>   <p>  @@ -1015,7 +1019,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>erase</code>  +<tt>erase</tt>   </dt>   <dd>   <p>  @@ -1025,13 +1029,13 @@  </dl></div>   <div class="paragraph"><p>The details of the credential will be provided on the helper’s stdin   stream. The exact format is the same as the input/output format of the  -<code>git credential</code> plumbing command (see the section <code>INPUT/OUTPUT  -FORMAT</code> in <a href="../git-credential.html">git-credential(7)</a> for a detailed specification).</p></div>  -<div class="paragraph"><p>For a <code>get</code> operation, the helper should produce a list of attributes  +<tt>git credential</tt> plumbing command (see the section <tt>INPUT/OUTPUT  +FORMAT</tt> in <a href="../git-credential.html">git-credential(7)</a> for a detailed specification).</p></div>  +<div class="paragraph"><p>For a <tt>get</tt> operation, the helper should produce a list of attributes   on stdout in the same format. A helper is free to produce a subset, or   even no values at all if it has nothing useful to provide. Any provided   attributes will overwrite those already known about by Git.</p></div>  -<div class="paragraph"><p>For a <code>store</code> or <code>erase</code> operation, the helper’s output is ignored.  +<div class="paragraph"><p>For a <tt>store</tt> or <tt>erase</tt> operation, the helper’s output is ignored.   If it fails to perform the requested operation, it may complain to   stderr to inform the user. If it does not support the requested   operation (e.g., a read-only store), it should silently ignore the  @@ -1045,7 +1049,7 @@  <h2 id="_see_also">See also</h2>   <div class="sectionbody">   <div class="paragraph"><p><a href="../gitcredentials.html">gitcredentials(7)</a></p></div>  -<div class="paragraph"><p><a href="../git-config.html">git-config(5)</a> (See configuration variables <code>credential.*</code>)</p></div>  +<div class="paragraph"><p><a href="../git-config.html">git-config(5)</a> (See configuration variables <tt>credential.*</tt>)</p></div>   </div>   </div>   </div>  diff --git a/technical/api-decorate.html b/technical/api-decorate.html index 67039df..e6b204e 100644 --- a/technical/api-decorate.html +++ b/technical/api-decorate.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>decorate API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-diff.html b/technical/api-diff.html index 53fa770..72a9809 100644 --- a/technical/api-diff.html +++ b/technical/api-diff.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>diff API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -745,8 +749,8 @@  <div class="ulist"><ul>   <li>   <p>  -finding total rewrites (<code>-B</code>), renames (<code>-M</code>) and copies (<code>-C</code>), and  - changes that touch a string (<code>-S</code>), as specified by the caller.  +finding total rewrites (<tt>-B</tt>), renames (<tt>-M</tt>) and copies (<tt>-C</tt>), and  + changes that touch a string (<tt>-S</tt>), as specified by the caller.   </p>   </li>   <li>  @@ -764,22 +768,22 @@  <div class="ulist"><ul>   <li>   <p>  -Prepare <code>struct diff_options</code> to record the set of diff options, and  - then call <code>diff_setup()</code> to initialize this structure. This sets up  +Prepare <tt>struct diff_options</tt> to record the set of diff options, and  + then call <tt>diff_setup()</tt> to initialize this structure. This sets up   the vanilla default.   </p>   </li>   <li>   <p>   Fill in the options structure to specify desired output format, rename  - detection, etc. <code>diff_opt_parse()</code> can be used to parse options given  + detection, etc. <tt>diff_opt_parse()</tt> can be used to parse options given   from the command line in a way consistent with existing git-diff   family of programs.   </p>   </li>   <li>   <p>  -Call <code>diff_setup_done()</code>; this inspects the options set up so far for  +Call <tt>diff_setup_done()</tt>; this inspects the options set up so far for   internal consistency and make necessary tweaking to it (e.g. if   textual patch output was asked, recursive behaviour is turned on);   the callback set_default in diff_options can be used to tweak this more.  @@ -787,22 +791,22 @@  </li>   <li>   <p>  -As you find different pairs of files, call <code>diff_change()</code> to feed  - modified files, <code>diff_addremove()</code> to feed created or deleted files,  - or <code>diff_unmerge()</code> to feed a file whose state is <em>unmerged</em> to the  - API. These are thin wrappers to a lower-level <code>diff_queue()</code> function  +As you find different pairs of files, call <tt>diff_change()</tt> to feed  + modified files, <tt>diff_addremove()</tt> to feed created or deleted files,  + or <tt>diff_unmerge()</tt> to feed a file whose state is <em>unmerged</em> to the  + API. These are thin wrappers to a lower-level <tt>diff_queue()</tt> function   that is flexible enough to record any of these kinds of changes.   </p>   </li>   <li>   <p>  -Once you finish feeding the pairs of files, call <code>diffcore_std()</code>.  +Once you finish feeding the pairs of files, call <tt>diffcore_std()</tt>.   This will tell the diffcore library to go ahead and do its work.   </p>   </li>   <li>   <p>  -Calling <code>diff_flush()</code> will produce the output.  +Calling <tt>diff_flush()</tt> will produce the output.   </p>   </li>   </ul></div>  @@ -814,68 +818,68 @@  <div class="ulist"><ul>   <li>   <p>  -<code>struct diff_filespec</code>  +<tt>struct diff_filespec</tt>   </p>   </li>   </ul></div>   <div class="paragraph"><p>This is the internal representation for a single file (blob). It   records the blob object name (if known — for a work tree file it   typically is a NUL SHA-1), filemode and pathname. This is what the  -<code>diff_addremove()</code>, <code>diff_change()</code> and <code>diff_unmerge()</code> synthesize and  -feed <code>diff_queue()</code> function with.</p></div>  +<tt>diff_addremove()</tt>, <tt>diff_change()</tt> and <tt>diff_unmerge()</tt> synthesize and  +feed <tt>diff_queue()</tt> function with.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>struct diff_filepair</code>  +<tt>struct diff_filepair</tt>   </p>   </li>   </ul></div>  -<div class="paragraph"><p>This records a pair of <code>struct diff_filespec</code>; the filespec for a file  -in the "old" set (i.e. preimage) is called <code>one</code>, and the filespec for a  -file in the "new" set (i.e. postimage) is called <code>two</code>. A change that  -represents file creation has NULL in <code>one</code>, and file deletion has NULL  -in <code>two</code>.</p></div>  -<div class="paragraph"><p>A <code>filepair</code> starts pointing at <code>one</code> and <code>two</code> that are from the same  -filename, but <code>diffcore_std()</code> can break pairs and match component  +<div class="paragraph"><p>This records a pair of <tt>struct diff_filespec</tt>; the filespec for a file  +in the "old" set (i.e. preimage) is called <tt>one</tt>, and the filespec for a  +file in the "new" set (i.e. postimage) is called <tt>two</tt>. A change that  +represents file creation has NULL in <tt>one</tt>, and file deletion has NULL  +in <tt>two</tt>.</p></div>  +<div class="paragraph"><p>A <tt>filepair</tt> starts pointing at <tt>one</tt> and <tt>two</tt> that are from the same  +filename, but <tt>diffcore_std()</tt> can break pairs and match component   filespecs with other filespecs from a different filepair to form new   filepair. This is called <em>rename detection</em>.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>struct diff_queue</code>  +<tt>struct diff_queue</tt>   </p>   </li>   </ul></div>   <div class="paragraph"><p>This is a collection of filepairs. Notable members are:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>queue</code>  +<tt>queue</tt>   </dt>   <dd>   <p>  - An array of pointers to <code>struct diff_filepair</code>. This  + An array of pointers to <tt>struct diff_filepair</tt>. This   dynamically grows as you add filepairs;   </p>   </dd>   <dt class="hdlist1">  -<code>alloc</code>  +<tt>alloc</tt>   </dt>   <dd>   <p>  - The allocated size of the <code>queue</code> array;  + The allocated size of the <tt>queue</tt> array;   </p>   </dd>   <dt class="hdlist1">  -<code>nr</code>  +<tt>nr</tt>   </dt>   <dd>   <p>  - The number of elements in the <code>queue</code> array.  + The number of elements in the <tt>queue</tt> array.   </p>   <div class="ulist"><ul>   <li>   <p>  -<code>struct diff_options</code>  +<tt>struct diff_options</tt>   </p>   </li>   </ul></div>  @@ -886,15 +890,15 @@  <div class="paragraph"><p>Notable members are:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>output_format</code>  +<tt>output_format</tt>   </dt>   <dd>   <p>  - The output format used when <code>diff_flush()</code> is run.  + The output format used when <tt>diff_flush()</tt> is run.   </p>   </dd>   <dt class="hdlist1">  -<code>context</code>  +<tt>context</tt>   </dt>   <dd>   <p>  @@ -902,7 +906,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>break_opt</code>, <code>detect_rename</code>, <code>rename-score</code>, <code>rename_limit</code>  +<tt>break_opt</tt>, <tt>detect_rename</tt>, <tt>rename-score</tt>, <tt>rename_limit</tt>   </dt>   <dd>   <p>  @@ -911,7 +915,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>abbrev</code>  +<tt>abbrev</tt>   </dt>   <dd>   <p>  @@ -919,7 +923,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>pickaxe</code>  +<tt>pickaxe</tt>   </dt>   <dd>   <p>  @@ -930,7 +934,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>flags</code>  +<tt>flags</tt>   </dt>   <dd>   <p>  @@ -940,7 +944,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>touched_flags</code>  +<tt>touched_flags</tt>   </dt>   <dd>   <p>  @@ -949,7 +953,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>set_default</code>  +<tt>set_default</tt>   </dt>   <dd>   <p>  @@ -1030,7 +1034,7 @@  <dd>   <p>   Tells the library that the calling program is feeding the  - filepairs reversed; <code>one</code> is two, and <code>two</code> is one.  + filepairs reversed; <tt>one</tt> is two, and <tt>two</tt> is one.   </p>   </dd>   <dt class="hdlist1">  diff --git a/technical/api-directory-listing.html b/technical/api-directory-listing.html index 2c27b89..7800222 100644 --- a/technical/api-directory-listing.html +++ b/technical/api-directory-listing.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>directory listing API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -737,66 +741,66 @@  <div id="preamble">   <div class="sectionbody">   <div class="paragraph"><p>The directory listing API is used to enumerate paths in the work tree,  -optionally taking <code>.git/info/exclude</code> and <code>.gitignore</code> files per  +optionally taking <tt>.git/info/exclude</tt> and <tt>.gitignore</tt> files per   directory into account.</p></div>   </div>   </div>   <div class="sect1">   <h2 id="_data_structure">Data structure</h2>   <div class="sectionbody">  -<div class="paragraph"><p><code>struct dir_struct</code> structure is used to pass directory traversal  +<div class="paragraph"><p><tt>struct dir_struct</tt> structure is used to pass directory traversal   options to the library and to record the paths discovered. A single  -<code>struct dir_struct</code> is used regardless of whether or not the traversal  +<tt>struct dir_struct</tt> is used regardless of whether or not the traversal   recursively descends into subdirectories.</p></div>   <div class="paragraph"><p>The notable options are:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>exclude_per_dir</code>  +<tt>exclude_per_dir</tt>   </dt>   <dd>   <p>   The name of the file to be read in each directory for excluded  - files (typically <code>.gitignore</code>).  + files (typically <tt>.gitignore</tt>).   </p>   </dd>   <dt class="hdlist1">  -<code>flags</code>  +<tt>flags</tt>   </dt>   <dd>   <p>  - A bit-field of options (the <code>*IGNORED*</code> flags are mutually exclusive):  + A bit-field of options (the <tt>*IGNORED*</tt> flags are mutually exclusive):   </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>DIR_SHOW_IGNORED</code>  +<tt>DIR_SHOW_IGNORED</tt>   </dt>   <dd>   <p>  - Return just ignored files in <code>entries[]</code>, not untracked files.  + Return just ignored files in <tt>entries[]</tt>, not untracked files.   </p>   </dd>   <dt class="hdlist1">  -<code>DIR_SHOW_IGNORED_TOO</code>  +<tt>DIR_SHOW_IGNORED_TOO</tt>   </dt>   <dd>   <p>  - Similar to <code>DIR_SHOW_IGNORED</code>, but return ignored files in <code>ignored[]</code>  - in addition to untracked files in <code>entries[]</code>.  + Similar to <tt>DIR_SHOW_IGNORED</tt>, but return ignored files in <tt>ignored[]</tt>  + in addition to untracked files in <tt>entries[]</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>DIR_COLLECT_IGNORED</code>  +<tt>DIR_COLLECT_IGNORED</tt>   </dt>   <dd>   <p>  - Special mode for git-add. Return ignored files in <code>ignored[]</code> and  - untracked files in <code>entries[]</code>. Only returns ignored files that match  + Special mode for git-add. Return ignored files in <tt>ignored[]</tt> and  + untracked files in <tt>entries[]</tt>. Only returns ignored files that match   pathspec exactly (no wildcards). Does not recurse into ignored   directories.   </p>   </dd>   <dt class="hdlist1">  -<code>DIR_SHOW_OTHER_DIRECTORIES</code>  +<tt>DIR_SHOW_OTHER_DIRECTORIES</tt>   </dt>   <dd>   <p>  @@ -804,7 +808,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>DIR_HIDE_EMPTY_DIRECTORIES</code>  +<tt>DIR_HIDE_EMPTY_DIRECTORIES</tt>   </dt>   <dd>   <p>  @@ -812,7 +816,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>DIR_NO_GITLINKS</code>  +<tt>DIR_NO_GITLINKS</tt>   </dt>   <dd>   <p>  @@ -826,45 +830,45 @@  <div class="paragraph"><p>The result of the enumeration is left in these fields:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>entries[]</code>  +<tt>entries[]</tt>   </dt>   <dd>   <p>  - An array of <code>struct dir_entry</code>, each element of which describes  + An array of <tt>struct dir_entry</tt>, each element of which describes   a path.   </p>   </dd>   <dt class="hdlist1">  -<code>nr</code>  +<tt>nr</tt>   </dt>   <dd>   <p>  - The number of members in <code>entries[]</code> array.  + The number of members in <tt>entries[]</tt> array.   </p>   </dd>   <dt class="hdlist1">  -<code>alloc</code>  +<tt>alloc</tt>   </dt>   <dd>   <p>  - Internal use; keeps track of allocation of <code>entries[]</code> array.  + Internal use; keeps track of allocation of <tt>entries[]</tt> array.   </p>   </dd>   <dt class="hdlist1">  -<code>ignored[]</code>  +<tt>ignored[]</tt>   </dt>   <dd>   <p>  - An array of <code>struct dir_entry</code>, used for ignored paths with the  - <code>DIR_SHOW_IGNORED_TOO</code> and <code>DIR_COLLECT_IGNORED</code> flags.  + An array of <tt>struct dir_entry</tt>, used for ignored paths with the  + <tt>DIR_SHOW_IGNORED_TOO</tt> and <tt>DIR_COLLECT_IGNORED</tt> flags.   </p>   </dd>   <dt class="hdlist1">  -<code>ignored_nr</code>  +<tt>ignored_nr</tt>   </dt>   <dd>   <p>  - The number of members in <code>ignored[]</code> array.  + The number of members in <tt>ignored[]</tt> array.   </p>   </dd>   </dl></div>  @@ -878,21 +882,21 @@  <div class="ulist"><ul>   <li>   <p>  -Prepare <code>struct dir_struct dir</code> and clear it with <code>memset(&dir, 0,  - sizeof(dir))</code>.  +Prepare <tt>struct dir_struct dir</tt> and clear it with <tt>memset(&dir, 0,  + sizeof(dir))</tt>.   </p>   </li>   <li>   <p>  -To add single exclude pattern, call <code>add_exclude_list()</code> and then  - <code>add_exclude()</code>.  +To add single exclude pattern, call <tt>add_exclude_list()</tt> and then  + <tt>add_exclude()</tt>.   </p>   </li>   <li>   <p>  -To add patterns from a file (e.g. <code>.git/info/exclude</code>), call  - <code>add_excludes_from_file()</code> , and/or set <code>dir.exclude_per_dir</code>. A  - short-hand function <code>setup_standard_excludes()</code> can be used to set  +To add patterns from a file (e.g. <tt>.git/info/exclude</tt>), call  + <tt>add_excludes_from_file()</tt> , and/or set <tt>dir.exclude_per_dir</tt>. A  + short-hand function <tt>setup_standard_excludes()</tt> can be used to set   up the standard set of exclude settings.   </p>   </li>  @@ -903,17 +907,17 @@  </li>   <li>   <p>  -Call <code>read_directory()</code>.  +Call <tt>read_directory()</tt>.   </p>   </li>   <li>   <p>  -Use <code>dir.entries[]</code>.  +Use <tt>dir.entries[]</tt>.   </p>   </li>   <li>   <p>  -Call <code>clear_directory()</code> when none of the contained elements are no longer in use.  +Call <tt>clear_directory()</tt> when none of the contained elements are no longer in use.   </p>   </li>   </ul></div>  diff --git a/technical/api-gitattributes.html b/technical/api-gitattributes.html index 903ce2c..8984129 100644 --- a/technical/api-gitattributes.html +++ b/technical/api-gitattributes.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>gitattributes API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -745,24 +749,24 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct git_attr</code>  +<tt>struct git_attr</tt>   </dt>   <dd>   <p>   An attribute is an opaque object that is identified by its name.  - Pass the name to <code>git_attr()</code> function to obtain the object of  + Pass the name to <tt>git_attr()</tt> function to obtain the object of   this type. The internal representation of this structure is   of no interest to the calling programs. The name of the  - attribute can be retrieved by calling <code>git_attr_name()</code>.  + attribute can be retrieved by calling <tt>git_attr_name()</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>struct git_attr_check</code>  +<tt>struct git_attr_check</tt>   </dt>   <dd>   <p>   This structure represents a set of attributes to check in a call  - to <code>git_check_attr()</code> function, and receives the results.  + to <tt>git_check_attr()</tt> function, and receives the results.   </p>   </dd>   </dl></div>  @@ -772,11 +776,11 @@  <h2 id="_attribute_values">Attribute Values</h2>   <div class="sectionbody">   <div class="paragraph"><p>An attribute for a path can be in one of four states: Set, Unset,  -Unspecified or set to a string, and <code>.value</code> member of <code>struct  -git_attr_check</code> records it. There are three macros to check these:</p></div>  +Unspecified or set to a string, and <tt>.value</tt> member of <tt>struct  +git_attr_check</tt> records it. There are three macros to check these:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>ATTR_TRUE()</code>  +<tt>ATTR_TRUE()</tt>   </dt>   <dd>   <p>  @@ -784,7 +788,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>ATTR_FALSE()</code>  +<tt>ATTR_FALSE()</tt>   </dt>   <dd>   <p>  @@ -792,7 +796,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>ATTR_UNSET()</code>  +<tt>ATTR_UNSET()</tt>   </dt>   <dd>   <p>  @@ -800,7 +804,7 @@  </p>   </dd>   </dl></div>  -<div class="paragraph"><p>If none of the above returns true, <code>.value</code> member points at a string  +<div class="paragraph"><p>If none of the above returns true, <tt>.value</tt> member points at a string   value of the attribute for the path.</p></div>   </div>   </div>  @@ -810,19 +814,19 @@  <div class="ulist"><ul>   <li>   <p>  -Prepare an array of <code>struct git_attr_check</code> to define the list of  +Prepare an array of <tt>struct git_attr_check</tt> to define the list of   attributes you would want to check. To populate this array, you would  - need to define necessary attributes by calling <code>git_attr()</code> function.  + need to define necessary attributes by calling <tt>git_attr()</tt> function.   </p>   </li>   <li>   <p>  -Call <code>git_check_attr()</code> to check the attributes for the path.  +Call <tt>git_check_attr()</tt> to check the attributes for the path.   </p>   </li>   <li>   <p>  -Inspect <code>git_attr_check</code> structure to see how each of the attribute in  +Inspect <tt>git_attr_check</tt> structure to see how each of the attribute in   the array is defined for the path.   </p>   </li>  @@ -836,47 +840,47 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Prepare an array of <code>struct git_attr_check</code> with two elements (because  - we are checking two attributes). Initialize their <code>attr</code> member with  - pointers to <code>struct git_attr</code> obtained by calling <code>git_attr()</code>:  +Prepare an array of <tt>struct git_attr_check</tt> with two elements (because  + we are checking two attributes). Initialize their <tt>attr</tt> member with  + pointers to <tt>struct git_attr</tt> obtained by calling <tt>git_attr()</tt>:   </p>   </li>   </ol></div>   <div class="listingblock">   <div class="content">  -<pre><code>static struct git_attr_check check[2];  +<pre><tt>static struct git_attr_check check[2];   static void setup_check(void)   {   if (check[0].attr)   return; /* already done */   check[0].attr = git_attr("crlf");   check[1].attr = git_attr("ident");  -}</code></pre>  +}</tt></pre>   </div></div>   <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Call <code>git_check_attr()</code> with the prepared array of <code>struct git_attr_check</code>:  +Call <tt>git_check_attr()</tt> with the prepared array of <tt>struct git_attr_check</tt>:   </p>   </li>   </ol></div>   <div class="listingblock">   <div class="content">  -<pre><code> const char *path;  +<pre><tt> const char *path;     setup_check();  - git_check_attr(path, ARRAY_SIZE(check), check);</code></pre>  + git_check_attr(path, ARRAY_SIZE(check), check);</tt></pre>   </div></div>   <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Act on <code>.value</code> member of the result, left in <code>check[]</code>:  +Act on <tt>.value</tt> member of the result, left in <tt>check[]</tt>:   </p>   </li>   </ol></div>   <div class="listingblock">   <div class="content">  -<pre><code> const char *value = check[0].value;  +<pre><tt> const char *value = check[0].value;     if (ATTR_TRUE(value)) {   The attribute is Set, by listing only the name of the  @@ -892,7 +896,7 @@  file for the path by saying "attr=value".   } else if (... other check using value as string ...) {   ...  - }</code></pre>  + }</tt></pre>   </div></div>   </div>   </div>  @@ -903,23 +907,23 @@  <div class="ulist"><ul>   <li>   <p>  -Call <code>git_all_attrs()</code>, which returns an array of <code>git_attr_check</code>  +Call <tt>git_all_attrs()</tt>, which returns an array of <tt>git_attr_check</tt>   structures.   </p>   </li>   <li>   <p>  -Iterate over the <code>git_attr_check</code> array to examine the attribute  +Iterate over the <tt>git_attr_check</tt> array to examine the attribute   names and values. The name of the attribute described by a  - <code>git_attr_check</code> object can be retrieved via  - <code>git_attr_name(check[i].attr)</code>. (Please note that no items will be  - returned for unset attributes, so <code>ATTR_UNSET()</code> will return false  - for all returned <code>git_array_check</code> objects.)  + <tt>git_attr_check</tt> object can be retrieved via  + <tt>git_attr_name(check[i].attr)</tt>. (Please note that no items will be  + returned for unset attributes, so <tt>ATTR_UNSET()</tt> will return false  + for all returned <tt>git_array_check</tt> objects.)   </p>   </li>   <li>   <p>  -Free the <code>git_array_check</code> array.  +Free the <tt>git_array_check</tt> array.   </p>   </li>   </ul></div>  diff --git a/technical/api-grep.html b/technical/api-grep.html index e5f5fb5..3a3589d 100644 --- a/technical/api-grep.html +++ b/technical/api-grep.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>grep API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-hash.html b/technical/api-hash.html index fc44b54..7dfda97 100644 --- a/technical/api-hash.html +++ b/technical/api-hash.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>hash API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -745,23 +749,23 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct hash_table</code>  +<tt>struct hash_table</tt>   </dt>   <dd>   <p>  - The hash table structure. The <code>array</code> member points to the hash table  - entries. The <code>size</code> member counts the total number of valid and invalid  - entries in the table. The <code>nr</code> member keeps track of the number of  + The hash table structure. The <tt>array</tt> member points to the hash table  + entries. The <tt>size</tt> member counts the total number of valid and invalid  + entries in the table. The <tt>nr</tt> member keeps track of the number of   valid entries.   </p>   </dd>   <dt class="hdlist1">  -<code>struct hash_table_entry</code>  +<tt>struct hash_table_entry</tt>   </dt>   <dd>   <p>  - An opaque structure representing an entry in the hash table. The <code>hash</code>  - member is the entry’s hash key and the <code>ptr</code> member is the entry’s  + An opaque structure representing an entry in the hash table. The <tt>hash</tt>  + member is the entry’s hash key and the <tt>ptr</tt> member is the entry’s   value.   </p>   </dd>  @@ -773,7 +777,7 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>init_hash</code>  +<tt>init_hash</tt>   </dt>   <dd>   <p>  @@ -781,7 +785,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>free_hash</code>  +<tt>free_hash</tt>   </dt>   <dd>   <p>  @@ -789,7 +793,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>insert_hash</code>  +<tt>insert_hash</tt>   </dt>   <dd>   <p>  @@ -800,7 +804,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>lookup_hash</code>  +<tt>lookup_hash</tt>   </dt>   <dd>   <p>  @@ -809,7 +813,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>for_each_hash</code>  +<tt>for_each_hash</tt>   </dt>   <dd>   <p>  diff --git a/technical/api-history-graph.html b/technical/api-history-graph.html index eaeb711..710ac1d 100644 --- a/technical/api-history-graph.html +++ b/technical/api-history-graph.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>history graph API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -747,48 +751,48 @@  <div class="ulist"><ul>   <li>   <p>  -<code>graph_init()</code> creates a new <code>struct git_graph</code>  +<tt>graph_init()</tt> creates a new <tt>struct git_graph</tt>   </p>   </li>   <li>   <p>  -<code>graph_update()</code> moves the graph to a new commit.  +<tt>graph_update()</tt> moves the graph to a new commit.   </p>   </li>   <li>   <p>  -<code>graph_next_line()</code> outputs the next line of the graph into a strbuf. It  +<tt>graph_next_line()</tt> outputs the next line of the graph into a strbuf. It   does not add a terminating newline.   </p>   </li>   <li>   <p>  -<code>graph_padding_line()</code> outputs a line of vertical padding in the graph. It  - is similar to <code>graph_next_line()</code>, but is guaranteed to never print the line  - containing the current commit. Where <code>graph_next_line()</code> would print the  - commit line next, <code>graph_padding_line()</code> prints a line that simply extends  +<tt>graph_padding_line()</tt> outputs a line of vertical padding in the graph. It  + is similar to <tt>graph_next_line()</tt>, but is guaranteed to never print the line  + containing the current commit. Where <tt>graph_next_line()</tt> would print the  + commit line next, <tt>graph_padding_line()</tt> prints a line that simply extends   all branch lines downwards one row, leaving their positions unchanged.   </p>   </li>   <li>   <p>  -<code>graph_is_commit_finished()</code> determines if the graph has output all lines  - necessary for the current commit. If <code>graph_update()</code> is called before all  +<tt>graph_is_commit_finished()</tt> determines if the graph has output all lines  + necessary for the current commit. If <tt>graph_update()</tt> is called before all   lines for the current commit have been printed, the next call to  - <code>graph_next_line()</code> will output an ellipsis, to indicate that a portion of  + <tt>graph_next_line()</tt> will output an ellipsis, to indicate that a portion of   the graph was omitted.   </p>   </li>   </ul></div>  -<div class="paragraph"><p>The following utility functions are wrappers around <code>graph_next_line()</code> and  -<code>graph_is_commit_finished()</code>. They always print the output to stdout.  +<div class="paragraph"><p>The following utility functions are wrappers around <tt>graph_next_line()</tt> and  +<tt>graph_is_commit_finished()</tt>. They always print the output to stdout.   They can all be called with a NULL graph argument, in which case no graph   output will be printed.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>graph_show_commit()</code> calls <code>graph_next_line()</code> and  - <code>graph_is_commit_finished()</code> until one of them return non-zero. This prints  +<tt>graph_show_commit()</tt> calls <tt>graph_next_line()</tt> and  + <tt>graph_is_commit_finished()</tt> until one of them return non-zero. This prints   all graph lines up to, and including, the line containing this commit.   Output is printed to stdout. The last line printed does not contain a   terminating newline.  @@ -796,40 +800,40 @@  </li>   <li>   <p>  -<code>graph_show_oneline()</code> calls <code>graph_next_line()</code> and prints the result to  +<tt>graph_show_oneline()</tt> calls <tt>graph_next_line()</tt> and prints the result to   stdout. The line printed does not contain a terminating newline.   </p>   </li>   <li>   <p>  -<code>graph_show_padding()</code> calls <code>graph_padding_line()</code> and prints the result to  +<tt>graph_show_padding()</tt> calls <tt>graph_padding_line()</tt> and prints the result to   stdout. The line printed does not contain a terminating newline.   </p>   </li>   <li>   <p>  -<code>graph_show_remainder()</code> calls <code>graph_next_line()</code> until  - <code>graph_is_commit_finished()</code> returns non-zero. Output is printed to stdout.  +<tt>graph_show_remainder()</tt> calls <tt>graph_next_line()</tt> until  + <tt>graph_is_commit_finished()</tt> returns non-zero. Output is printed to stdout.   The last line printed does not contain a terminating newline. Returns 1 if   output was printed, and 0 if no output was necessary.   </p>   </li>   <li>   <p>  -<code>graph_show_strbuf()</code> prints the specified strbuf to stdout, prefixing all  +<tt>graph_show_strbuf()</tt> prints the specified strbuf to stdout, prefixing all   lines but the first with a graph line. The caller is responsible for   ensuring graph output for the first line has already been printed to stdout.  - (This can be done with <code>graph_show_commit()</code> or <code>graph_show_oneline()</code>.) If  + (This can be done with <tt>graph_show_commit()</tt> or <tt>graph_show_oneline()</tt>.) If   a NULL graph is supplied, the strbuf is printed as-is.   </p>   </li>   <li>   <p>  -<code>graph_show_commit_msg()</code> is similar to <code>graph_show_strbuf()</code>, but it also  +<tt>graph_show_commit_msg()</tt> is similar to <tt>graph_show_strbuf()</tt>, but it also   prints the remainder of the graph, if more lines are needed after the strbuf  - ends. It is better than directly calling <code>graph_show_strbuf()</code> followed by  - <code>graph_show_remainder()</code> since it properly handles buffers that do not end in  - a terminating newline. The output printed by <code>graph_show_commit_msg()</code> will  + ends. It is better than directly calling <tt>graph_show_strbuf()</tt> followed by  + <tt>graph_show_remainder()</tt> since it properly handles buffers that do not end in  + a terminating newline. The output printed by <tt>graph_show_commit_msg()</tt> will   end in a newline if and only if the strbuf ends in a newline.   </p>   </li>  @@ -839,7 +843,7 @@  <div class="sect1">   <h2 id="_data_structure">Data structure</h2>   <div class="sectionbody">  -<div class="paragraph"><p><code>struct git_graph</code> is an opaque data type used to store the current graph  +<div class="paragraph"><p><tt>struct git_graph</tt> is an opaque data type used to store the current graph   state.</p></div>   </div>   </div>  @@ -849,24 +853,24 @@  <div class="ulist"><ul>   <li>   <p>  -Create a <code>struct git_graph</code> by calling <code>graph_init()</code>. When using the  - revision walking API, this is done automatically by <code>setup_revisions()</code> if  +Create a <tt>struct git_graph</tt> by calling <tt>graph_init()</tt>. When using the  + revision walking API, this is done automatically by <tt>setup_revisions()</tt> if   the <em>--graph</em> option is supplied.   </p>   </li>   <li>   <p>   Use the revision walking API to walk through a group of contiguous commits.  - The <code>get_revision()</code> function automatically calls <code>graph_update()</code> each time  + The <tt>get_revision()</tt> function automatically calls <tt>graph_update()</tt> each time   it is invoked.   </p>   </li>   <li>   <p>  -For each commit, call <code>graph_next_line()</code> repeatedly, until  - <code>graph_is_commit_finished()</code> returns non-zero. Each call go  - <code>graph_next_line()</code> will output a single line of the graph. The resulting  - lines will not contain any newlines. <code>graph_next_line()</code> returns 1 if the  +For each commit, call <tt>graph_next_line()</tt> repeatedly, until  + <tt>graph_is_commit_finished()</tt> returns non-zero. Each call go  + <tt>graph_next_line()</tt> will output a single line of the graph. The resulting  + lines will not contain any newlines. <tt>graph_next_line()</tt> returns 1 if the   resulting line contains the current commit, or 0 if this is merely a line   needed to adjust the graph before or after the current commit. This return   value can be used to determine where to print the commit summary information  @@ -882,19 +886,19 @@  <div class="ulist"><ul>   <li>   <p>  -<code>graph_update()</code> must be called with commits in topological order. It should  +<tt>graph_update()</tt> must be called with commits in topological order. It should   not be called on a commit if it has already been invoked with an ancestor of   that commit, or the graph output will be incorrect.   </p>   </li>   <li>   <p>  -<code>graph_update()</code> must be called on a contiguous group of commits. If  - <code>graph_update()</code> is called on a particular commit, it should later be called  +<tt>graph_update()</tt> must be called on a contiguous group of commits. If  + <tt>graph_update()</tt> is called on a particular commit, it should later be called   on all parents of that commit. Parents must not be skipped, or the graph   output will appear incorrect.   </p>  -<div class="paragraph"><p><code>graph_update()</code> may be used on a pruned set of commits only if the parent list  +<div class="paragraph"><p><tt>graph_update()</tt> may be used on a pruned set of commits only if the parent list   has been rewritten so as to include only ancestors from the pruned set.</p></div>   </li>   <li>  @@ -912,7 +916,7 @@  <div class="sectionbody">   <div class="listingblock">   <div class="content">  -<pre><code>struct commit *commit;  +<pre><tt>struct commit *commit;   struct git_graph *graph = graph_init(opts);     while ((commit = get_revision(opts)) != NULL) {  @@ -931,7 +935,7 @@  else   putchar(opts->diffopt.line_termination);   }  -}</code></pre>  +}</tt></pre>   </div></div>   </div>   </div>  @@ -943,7 +947,7 @@  outputting that information, if desired.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>*  +<pre><tt>*   *   *   |\  @@ -972,7 +976,7 @@  * | | | | |   | | | | | *   | | | | |/  -| | | | *</code></pre>  +| | | | *</tt></pre>   </div></div>   </div>   </div>  diff --git a/technical/api-in-core-index.html b/technical/api-in-core-index.html index 49d749e..3562285 100644 --- a/technical/api-in-core-index.html +++ b/technical/api-in-core-index.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>in-core index API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-index.html b/technical/api-index.html index ab4d702..4dc08ec 100644 --- a/technical/api-index.html +++ b/technical/api-index.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Git API Documents</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -891,7 +895,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2013-11-27 14:11:53 PST  +Last updated 2014-01-17 14:44:28 PST   </div>   </div>   </body>  diff --git a/technical/api-lockfile.html b/technical/api-lockfile.html index 2a9155e..3994422 100644 --- a/technical/api-lockfile.html +++ b/technical/api-lockfile.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>lockfile API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -741,9 +745,9 @@  <li>   <p>   Mutual exclusion. When we write out a new index file, first  - we create a new file <code>$GIT_DIR/index.lock</code>, write the new  + we create a new file <tt>$GIT_DIR/index.lock</tt>, write the new   contents into it, and rename it to the final destination  - <code>$GIT_DIR/index</code>. We try to create the <code>$GIT_DIR/index.lock</code>  + <tt>$GIT_DIR/index</tt>. We try to create the <tt>$GIT_DIR/index.lock</tt>   file with O_EXCL so that we can notice and fail when somebody   else is already trying to update the index file.   </p>  @@ -751,11 +755,11 @@  <li>   <p>   Automatic cruft removal. After we create the "lock" file, we  - may decide to <code>die()</code>, and we would want to make sure that we  + may decide to <tt>die()</tt>, and we would want to make sure that we   remove the file that has not been committed to its final   destination. This is done by remembering the lockfiles we   created in a linked list and cleaning them up from an  - <code>atexit(3)</code> handler. Outstanding lockfiles are also removed  + <tt>atexit(3)</tt> handler. Outstanding lockfiles are also removed   when the program dies on a signal.   </p>   </li>  @@ -771,11 +775,11 @@  </dt>   <dd>   <p>  - Take a pointer to <code>struct lock_file</code>, the filename of  - the final destination (e.g. <code>$GIT_DIR/index</code>) and a flag  - <code>die_on_error</code>. Attempt to create a lockfile for the  + Take a pointer to <tt>struct lock_file</tt>, the filename of  + the final destination (e.g. <tt>$GIT_DIR/index</tt>) and a flag  + <tt>die_on_error</tt>. Attempt to create a lockfile for the   destination and return the file descriptor for writing  - to the file. If <code>die_on_error</code> flag is true, it dies if  + to the file. If <tt>die_on_error</tt> flag is true, it dies if   a lock is already taken for the file; otherwise it   returns a negative integer to the caller on failure.   </p>  @@ -785,8 +789,8 @@  </dt>   <dd>   <p>  - Take a pointer to the <code>struct lock_file</code> initialized  - with an earlier call to <code>hold_lock_file_for_update()</code>,  + Take a pointer to the <tt>struct lock_file</tt> initialized  + with an earlier call to <tt>hold_lock_file_for_update()</tt>,   close the file descriptor and rename the lockfile to its   final destination. Returns 0 upon success, a negative   value on failure to close(2) or rename(2).  @@ -797,8 +801,8 @@  </dt>   <dd>   <p>  - Take a pointer to the <code>struct lock_file</code> initialized  - with an earlier call to <code>hold_lock_file_for_update()</code>,  + Take a pointer to the <tt>struct lock_file</tt> initialized  + with an earlier call to <tt>hold_lock_file_for_update()</tt>,   close the file descriptor and remove the lockfile.   </p>   </dd>  @@ -807,30 +811,30 @@  </dt>   <dd>   <p>  - Take a pointer to the <code>struct lock_file</code> initialized  - with an earlier call to <code>hold_lock_file_for_update()</code>,  + Take a pointer to the <tt>struct lock_file</tt> initialized  + with an earlier call to <tt>hold_lock_file_for_update()</tt>,   and close the file descriptor. Returns 0 upon success,   a negative value on failure to close(2).   </p>   </dd>   </dl></div>  -<div class="paragraph"><p>Because the structure is used in an <code>atexit(3)</code> handler, its  +<div class="paragraph"><p>Because the structure is used in an <tt>atexit(3)</tt> handler, its   storage has to stay throughout the life of the program. It   cannot be an auto variable allocated on the stack.</p></div>  -<div class="paragraph"><p>Call <code>commit_lock_file()</code> or <code>rollback_lock_file()</code> when you are  +<div class="paragraph"><p>Call <tt>commit_lock_file()</tt> or <tt>rollback_lock_file()</tt> when you are   done writing to the file descriptor. If you do not call either  -and simply <code>exit(3)</code> from the program, an <code>atexit(3)</code> handler  +and simply <tt>exit(3)</tt> from the program, an <tt>atexit(3)</tt> handler   will close and remove the lockfile.</p></div>   <div class="paragraph"><p>If you need to close the file descriptor you obtained from  -<code>hold_lock_file_for_update</code> function yourself, do so by calling  -<code>close_lock_file()</code>. You should never call <code>close(2)</code> yourself!  -Otherwise the <code>struct  -lock_file</code> structure still remembers that the file descriptor  -needs to be closed, and a later call to <code>commit_lock_file()</code> or  -<code>rollback_lock_file()</code> will result in duplicate calls to  -<code>close(2)</code>. Worse yet, if you <code>close(2)</code>, open another file  +<tt>hold_lock_file_for_update</tt> function yourself, do so by calling  +<tt>close_lock_file()</tt>. You should never call <tt>close(2)</tt> yourself!  +Otherwise the <tt>struct  +lock_file</tt> structure still remembers that the file descriptor  +needs to be closed, and a later call to <tt>commit_lock_file()</tt> or  +<tt>rollback_lock_file()</tt> will result in duplicate calls to  +<tt>close(2)</tt>. Worse yet, if you <tt>close(2)</tt>, open another file   descriptor for completely different purpose, and then call  -<code>commit_lock_file()</code> or <code>rollback_lock_file()</code>, they may close  +<tt>commit_lock_file()</tt> or <tt>rollback_lock_file()</tt>, they may close   that unrelated file descriptor.</p></div>   </div>   </div>  diff --git a/technical/api-merge.html b/technical/api-merge.html index 29d50c6..331e4e0 100644 --- a/technical/api-merge.html +++ b/technical/api-merge.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>merge API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -757,7 +761,7 @@  <li>   <p>   performing a three-way merge of corresponding files, taking  - path-specific merge drivers (specified in <code>.gitattributes</code>)  + path-specific merge drivers (specified in <tt>.gitattributes</tt>)   into account.   </p>   </li>  @@ -770,17 +774,17 @@  <div class="ulist"><ul>   <li>   <p>  -<code>mmbuffer_t</code>, <code>mmfile_t</code>  +<tt>mmbuffer_t</tt>, <tt>mmfile_t</tt>   </p>   </li>   </ul></div>   <div class="paragraph"><p>These store data usable for use by the xdiff backend, for writing and  -for reading, respectively. See <code>xdiff/xdiff.h</code> for the definitions  -and <code>diff.c</code> for examples.</p></div>  +for reading, respectively. See <tt>xdiff/xdiff.h</tt> for the definitions  +and <tt>diff.c</tt> for examples.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>struct ll_merge_options</code>  +<tt>struct ll_merge_options</tt>   </p>   </li>   </ul></div>  @@ -788,31 +792,31 @@  the operation of a low-level (single file) merge. Some options:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>virtual_ancestor</code>  +<tt>virtual_ancestor</tt>   </dt>   <dd>   <p>   Behave as though this were part of a merge between common   ancestors in a recursive merge.   If a helper program is specified by the  - <code>[merge "<driver>"] recursive</code> configuration, it will  + <tt>[merge "<driver>"] recursive</tt> configuration, it will   be used (see <a href="../gitattributes.html">gitattributes(5)</a>).   </p>   </dd>   <dt class="hdlist1">  -<code>variant</code>  +<tt>variant</tt>   </dt>   <dd>   <p>   Resolve local conflicts automatically in favor   of one side or the other (as in <em>git merge-file</em>  - <code>--ours</code>/<code>--theirs</code>/<code>--union</code>). Can be <code>0</code>,  - <code>XDL_MERGE_FAVOR_OURS</code>, <code>XDL_MERGE_FAVOR_THEIRS</code>, or  - <code>XDL_MERGE_FAVOR_UNION</code>.  + <tt>--ours</tt>/<tt>--theirs</tt>/<tt>--union</tt>). Can be <tt>0</tt>,  + <tt>XDL_MERGE_FAVOR_OURS</tt>, <tt>XDL_MERGE_FAVOR_THEIRS</tt>, or  + <tt>XDL_MERGE_FAVOR_UNION</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>renormalize</code>  +<tt>renormalize</tt>   </dt>   <dd>   <p>  @@ -830,14 +834,14 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>ll_merge</code>  +<tt>ll_merge</tt>   </dt>   <dd>   <p>   Perform a three-way single-file merge in core. This is  - a thin wrapper around <code>xdl_merge</code> that takes the path and  - any merge backend specified in <code>.gitattributes</code> or  - <code>.git/info/attributes</code> into account. Returns 0 for a  + a thin wrapper around <tt>xdl_merge</tt> that takes the path and  + any merge backend specified in <tt>.gitattributes</tt> or  + <tt>.git/info/attributes</tt> into account. Returns 0 for a   clean merge.   </p>   </dd>  @@ -846,9 +850,9 @@  <div class="ulist"><ul>   <li>   <p>  -Prepare a <code>struct ll_merge_options</code> to record options.  - If you have no special requests, skip this and pass <code>NULL</code>  - as the <code>opts</code> parameter to use the default options.  +Prepare a <tt>struct ll_merge_options</tt> to record options.  + If you have no special requests, skip this and pass <tt>NULL</tt>  + as the <tt>opts</tt> parameter to use the default options.   </p>   </li>   <li>  @@ -859,32 +863,32 @@  <li>   <p>   Allocate and fill variables with the file’s original content  - and two modified versions (using <code>read_mmfile</code>, for example).  + and two modified versions (using <tt>read_mmfile</tt>, for example).   </p>   </li>   <li>   <p>  -Call <code>ll_merge()</code>.  +Call <tt>ll_merge()</tt>.   </p>   </li>   <li>   <p>  -Read the merged content from <code>result_buf.ptr</code> and <code>result_buf.size</code>.  +Read the merged content from <tt>result_buf.ptr</tt> and <tt>result_buf.size</tt>.   </p>   </li>   <li>   <p>   Release buffers when finished. A simple  - <code>free(ancestor.ptr); free(ours.ptr); free(theirs.ptr);  - free(result_buf.ptr);</code> will do.  + <tt>free(ancestor.ptr); free(ours.ptr); free(theirs.ptr);  + free(result_buf.ptr);</tt> will do.   </p>   </li>   </ul></div>  -<div class="paragraph"><p>If the modifications do not merge cleanly, <code>ll_merge</code> will return a  -nonzero value and <code>result_buf</code> will generally include a description of  -the conflict bracketed by markers such as the traditional <code><<<<<<<</code>  -and <code>>>>>>>></code>.</p></div>  -<div class="paragraph"><p>The <code>ancestor_label</code>, <code>our_label</code>, and <code>their_label</code> parameters are  +<div class="paragraph"><p>If the modifications do not merge cleanly, <tt>ll_merge</tt> will return a  +nonzero value and <tt>result_buf</tt> will generally include a description of  +the conflict bracketed by markers such as the traditional <tt><<<<<<<</tt>  +and <tt>>>>>>>></tt>.</p></div>  +<div class="paragraph"><p>The <tt>ancestor_label</tt>, <tt>our_label</tt>, and <tt>their_label</tt> parameters are   used to label the different sides of a conflict if the merge driver   supports this.</p></div>   </div>  diff --git a/technical/api-object-access.html b/technical/api-object-access.html index 1e4519a..ac4f775 100644 --- a/technical/api-object-access.html +++ b/technical/api-object-access.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>object access API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-parse-options.html b/technical/api-parse-options.html index 5a80fae..083699d 100644 --- a/technical/api-parse-options.html +++ b/technical/api-parse-options.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>parse-options API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -743,7 +747,7 @@  <div class="sect1">   <h2 id="_basics">Basics</h2>   <div class="sectionbody">  -<div class="paragraph"><p>The argument vector <code>argv[]</code> may usually contain mandatory or optional  +<div class="paragraph"><p>The argument vector <tt>argv[]</tt> may usually contain mandatory or optional   <em>non-option arguments</em>, e.g. a filename or a branch, and <em>options</em>.   Options are optional arguments that start with a dash and   that allow to change the behavior of a command.</p></div>  @@ -760,9 +764,9 @@  <li>   <p>   There are basically two forms of options:  - <em>Short options</em> consist of one dash (<code>-</code>) and one alphanumeric  + <em>Short options</em> consist of one dash (<tt>-</tt>) and one alphanumeric   character.  - <em>Long options</em> begin with two dashes (<code>--</code>) and some  + <em>Long options</em> begin with two dashes (<tt>--</tt>) and some   alphanumeric characters.   </p>   </li>  @@ -778,8 +782,8 @@  <li>   <p>   <em>stuck</em> and <em>separate form</em> of options with arguments.  - <code>-oArg</code> is stuck, <code>-o Arg</code> is separate form.  - <code>--option=Arg</code> is stuck, <code>--option Arg</code> is separate form.  + <tt>-oArg</tt> is stuck, <tt>-o Arg</tt> is separate form.  + <tt>--option=Arg</tt> is stuck, <tt>--option Arg</tt> is separate form.   </p>   </li>   <li>  @@ -790,23 +794,23 @@  </li>   <li>   <p>  -Short options may be bundled, e.g. <code>-a -b</code> can be specified as <code>-ab</code>.  +Short options may be bundled, e.g. <tt>-a -b</tt> can be specified as <tt>-ab</tt>.   </p>   </li>   <li>   <p>   Boolean long options can be <em>negated</em> (or <em>unset</em>) by prepending  - <code>no-</code>, e.g. <code>--no-abbrev</code> instead of <code>--abbrev</code>. Conversely,  - options that begin with <code>no-</code> can be <em>negated</em> by removing it.  + <tt>no-</tt>, e.g. <tt>--no-abbrev</tt> instead of <tt>--abbrev</tt>. Conversely,  + options that begin with <tt>no-</tt> can be <em>negated</em> by removing it.   Other long options can be unset (e.g., set string to NULL, set  - integer to 0) by prepending <code>no-</code>.  + integer to 0) by prepending <tt>no-</tt>.   </p>   </li>   <li>   <p>  -Options and non-option arguments can clearly be separated using the <code>--</code>  - option, e.g. <code>-a -b --option -- --this-is-a-file</code> indicates that  - <code>--this-is-a-file</code> must not be processed as an option.  +Options and non-option arguments can clearly be separated using the <tt>--</tt>  + option, e.g. <tt>-a -b --option -- --this-is-a-file</tt> indicates that  + <tt>--this-is-a-file</tt> must not be processed as an option.   </p>   </li>   </ul></div>  @@ -818,34 +822,34 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -<code>#include "parse-options.h"</code>  +<tt>#include "parse-options.h"</tt>   </p>   </li>   <li>   <p>   define a NULL-terminated  - <code>static const char * const builtin_foo_usage[]</code> array  + <tt>static const char * const builtin_foo_usage[]</tt> array   containing alternative usage strings   </p>   </li>   <li>   <p>  -define <code>builtin_foo_options</code> array as described below  +define <tt>builtin_foo_options</tt> array as described below   in section <em>Data Structure</em>.   </p>   </li>   <li>   <p>  -in <code>cmd_foo(int argc, const char **argv, const char *prefix)</code>  +in <tt>cmd_foo(int argc, const char **argv, const char *prefix)</tt>   call   </p>   <div class="literalblock">   <div class="content">  -<pre><code>argc = parse_options(argc, argv, prefix, builtin_foo_options, builtin_foo_usage, flags);</code></pre>  +<pre><tt>argc = parse_options(argc, argv, prefix, builtin_foo_options, builtin_foo_usage, flags);</tt></pre>   </div></div>  -<div class="paragraph"><p><code>parse_options()</code> will filter out the processed options of <code>argv[]</code> and leave the  -non-option arguments in <code>argv[]</code>.  -<code>argc</code> is updated appropriately because of the assignment.</p></div>  +<div class="paragraph"><p><tt>parse_options()</tt> will filter out the processed options of <tt>argv[]</tt> and leave the  +non-option arguments in <tt>argv[]</tt>.  +<tt>argc</tt> is updated appropriately because of the assignment.</p></div>   <div class="paragraph"><p>You can also pass NULL instead of a usage array as the fifth parameter of   parse_options(), to avoid displaying a help screen with usage info and   option list. This should only be done if necessary, e.g. to implement  @@ -854,16 +858,16 @@  <div class="paragraph"><p>Flags are the bitwise-or of:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>PARSE_OPT_KEEP_DASHDASH</code>  +<tt>PARSE_OPT_KEEP_DASHDASH</tt>   </dt>   <dd>   <p>  - Keep the <code>--</code> that usually separates options from  + Keep the <tt>--</tt> that usually separates options from   non-option arguments.   </p>   </dd>   <dt class="hdlist1">  -<code>PARSE_OPT_STOP_AT_NON_OPTION</code>  +<tt>PARSE_OPT_STOP_AT_NON_OPTION</tt>   </dt>   <dd>   <p>  @@ -873,7 +877,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>PARSE_OPT_KEEP_ARGV0</code>  +<tt>PARSE_OPT_KEEP_ARGV0</tt>   </dt>   <dd>   <p>  @@ -882,29 +886,29 @@  </p>   </dd>   <dt class="hdlist1">  -<code>PARSE_OPT_KEEP_UNKNOWN</code>  +<tt>PARSE_OPT_KEEP_UNKNOWN</tt>   </dt>   <dd>   <p>   Keep unknown arguments instead of erroring out. This doesn’t   work for all combinations of arguments as users might expect  - it to do. E.g. if the first argument in <code>--unknown --known</code>  + it to do. E.g. if the first argument in <tt>--unknown --known</tt>   takes a value (which we can’t know), the second one is   mistakenly interpreted as a known option. Similarly, if  - <code>PARSE_OPT_STOP_AT_NON_OPTION</code> is set, the second argument in  - <code>--unknown value</code> will be mistakenly interpreted as a  + <tt>PARSE_OPT_STOP_AT_NON_OPTION</tt> is set, the second argument in  + <tt>--unknown value</tt> will be mistakenly interpreted as a   non-option, not as a value belonging to the unknown option,   the parser early. That’s why parse_options() errors out if   both options are set.   </p>   </dd>   <dt class="hdlist1">  -<code>PARSE_OPT_NO_INTERNAL_HELP</code>  +<tt>PARSE_OPT_NO_INTERNAL_HELP</tt>   </dt>   <dd>   <p>  - By default, parse_options() handles <code>-h</code>, <code>--help</code> and  - <code>--help-all</code> internally, by showing a help screen. This option  + By default, parse_options() handles <tt>-h</tt>, <tt>--help</tt> and  + <tt>--help-all</tt> internally, by showing a help screen. This option   turns it off and allows one to add custom handlers for these   options, or to just leave them unknown.   </p>  @@ -917,218 +921,218 @@  <div class="sect1">   <h2 id="_data_structure">Data Structure</h2>   <div class="sectionbody">  -<div class="paragraph"><p>The main data structure is an array of the <code>option</code> struct,  -say <code>static struct option builtin_add_options[]</code>.  +<div class="paragraph"><p>The main data structure is an array of the <tt>option</tt> struct,  +say <tt>static struct option builtin_add_options[]</tt>.   There are some macros to easily define options:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>OPT__ABBREV(&int_var)</code>  +<tt>OPT__ABBREV(&int_var)</tt>   </dt>   <dd>   <p>  - Add <code>--abbrev[=<n>]</code>.  + Add <tt>--abbrev[=<n>]</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT__COLOR(&int_var, description)</code>  +<tt>OPT__COLOR(&int_var, description)</tt>   </dt>   <dd>   <p>  - Add <code>--color[=<when>]</code> and <code>--no-color</code>.  + Add <tt>--color[=<when>]</tt> and <tt>--no-color</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT__DRY_RUN(&int_var, description)</code>  +<tt>OPT__DRY_RUN(&int_var, description)</tt>   </dt>   <dd>   <p>  - Add <code>-n, --dry-run</code>.  + Add <tt>-n, --dry-run</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT__FORCE(&int_var, description)</code>  +<tt>OPT__FORCE(&int_var, description)</tt>   </dt>   <dd>   <p>  - Add <code>-f, --force</code>.  + Add <tt>-f, --force</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT__QUIET(&int_var, description)</code>  +<tt>OPT__QUIET(&int_var, description)</tt>   </dt>   <dd>   <p>  - Add <code>-q, --quiet</code>.  + Add <tt>-q, --quiet</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT__VERBOSE(&int_var, description)</code>  +<tt>OPT__VERBOSE(&int_var, description)</tt>   </dt>   <dd>   <p>  - Add <code>-v, --verbose</code>.  + Add <tt>-v, --verbose</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_GROUP(description)</code>  +<tt>OPT_GROUP(description)</tt>   </dt>   <dd>   <p>  - Start an option group. <code>description</code> is a short string that  + Start an option group. <tt>description</tt> is a short string that   describes the group or an empty string.   Start the description with an upper-case letter.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_BOOL(short, long, &int_var, description)</code>  +<tt>OPT_BOOL(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>  - Introduce a boolean option. <code>int_var</code> is set to one with  - <code>--option</code> and set to zero with <code>--no-option</code>.  + Introduce a boolean option. <tt>int_var</tt> is set to one with  + <tt>--option</tt> and set to zero with <tt>--no-option</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_COUNTUP(short, long, &int_var, description)</code>  +<tt>OPT_COUNTUP(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>   Introduce a count-up option.  - <code>int_var</code> is incremented on each use of <code>--option</code>, and  - reset to zero with <code>--no-option</code>.  + <tt>int_var</tt> is incremented on each use of <tt>--option</tt>, and  + reset to zero with <tt>--no-option</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_BIT(short, long, &int_var, description, mask)</code>  +<tt>OPT_BIT(short, long, &int_var, description, mask)</tt>   </dt>   <dd>   <p>   Introduce a boolean option.  - If used, <code>int_var</code> is bitwise-ored with <code>mask</code>.  + If used, <tt>int_var</tt> is bitwise-ored with <tt>mask</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_NEGBIT(short, long, &int_var, description, mask)</code>  +<tt>OPT_NEGBIT(short, long, &int_var, description, mask)</tt>   </dt>   <dd>   <p>   Introduce a boolean option.  - If used, <code>int_var</code> is bitwise-anded with the inverted <code>mask</code>.  + If used, <tt>int_var</tt> is bitwise-anded with the inverted <tt>mask</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_SET_INT(short, long, &int_var, description, integer)</code>  +<tt>OPT_SET_INT(short, long, &int_var, description, integer)</tt>   </dt>   <dd>   <p>   Introduce an integer option.  - <code>int_var</code> is set to <code>integer</code> with <code>--option</code>, and  - reset to zero with <code>--no-option</code>.  + <tt>int_var</tt> is set to <tt>integer</tt> with <tt>--option</tt>, and  + reset to zero with <tt>--no-option</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_SET_PTR(short, long, &ptr_var, description, ptr)</code>  +<tt>OPT_SET_PTR(short, long, &ptr_var, description, ptr)</tt>   </dt>   <dd>   <p>   Introduce a boolean option.  - If used, set <code>ptr_var</code> to <code>ptr</code>.  + If used, set <tt>ptr_var</tt> to <tt>ptr</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_STRING(short, long, &str_var, arg_str, description)</code>  +<tt>OPT_STRING(short, long, &str_var, arg_str, description)</tt>   </dt>   <dd>   <p>   Introduce an option with string argument.  - The string argument is put into <code>str_var</code>.  + The string argument is put into <tt>str_var</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_INTEGER(short, long, &int_var, description)</code>  +<tt>OPT_INTEGER(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>   Introduce an option with integer argument.  - The integer is put into <code>int_var</code>.  + The integer is put into <tt>int_var</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_DATE(short, long, &int_var, description)</code>  +<tt>OPT_DATE(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>  - Introduce an option with date argument, see <code>approxidate()</code>.  - The timestamp is put into <code>int_var</code>.  + Introduce an option with date argument, see <tt>approxidate()</tt>.  + The timestamp is put into <tt>int_var</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_EXPIRY_DATE(short, long, &int_var, description)</code>  +<tt>OPT_EXPIRY_DATE(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>  - Introduce an option with expiry date argument, see <code>parse_expiry_date()</code>.  - The timestamp is put into <code>int_var</code>.  + Introduce an option with expiry date argument, see <tt>parse_expiry_date()</tt>.  + The timestamp is put into <tt>int_var</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_CALLBACK(short, long, &var, arg_str, description, func_ptr)</code>  +<tt>OPT_CALLBACK(short, long, &var, arg_str, description, func_ptr)</tt>   </dt>   <dd>   <p>   Introduce an option with argument.  - The argument will be fed into the function given by <code>func_ptr</code>  - and the result will be put into <code>var</code>.  + The argument will be fed into the function given by <tt>func_ptr</tt>  + and the result will be put into <tt>var</tt>.   See <em>Option Callbacks</em> below for a more elaborate description.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_FILENAME(short, long, &var, description)</code>  +<tt>OPT_FILENAME(short, long, &var, description)</tt>   </dt>   <dd>   <p>   Introduce an option with a filename argument.   The filename will be prefixed by passing the filename along with  - the prefix argument of <code>parse_options()</code> to <code>prefix_filename()</code>.  + the prefix argument of <tt>parse_options()</tt> to <tt>prefix_filename()</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_ARGUMENT(long, description)</code>  +<tt>OPT_ARGUMENT(long, description)</tt>   </dt>   <dd>   <p>  - Introduce a long-option argument that will be kept in <code>argv[]</code>.  + Introduce a long-option argument that will be kept in <tt>argv[]</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_NUMBER_CALLBACK(&var, description, func_ptr)</code>  +<tt>OPT_NUMBER_CALLBACK(&var, description, func_ptr)</tt>   </dt>   <dd>   <p>   Recognize numerical options like -123 and feed the integer as  - if it was an argument to the function given by <code>func_ptr</code>.  - The result will be put into <code>var</code>. There can be only one such  + if it was an argument to the function given by <tt>func_ptr</tt>.  + The result will be put into <tt>var</tt>. There can be only one such   option definition. It cannot be negated and it takes no   arguments. Short options that happen to be digits take   precedence over it.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_COLOR_FLAG(short, long, &int_var, description)</code>  +<tt>OPT_COLOR_FLAG(short, long, &int_var, description)</tt>   </dt>   <dd>   <p>   Introduce an option that takes an optional argument that can   have one of three values: "always", "never", or "auto". If the  - argument is not given, it defaults to "always". The <code>--no-</code> form  - works like <code>--long=never</code>; it cannot take an argument. If  - "always", set <code>int_var</code> to 1; if "never", set <code>int_var</code> to 0; if  - "auto", set <code>int_var</code> to 1 if stdout is a tty or a pager,  + argument is not given, it defaults to "always". The <tt>--no-</tt> form  + works like <tt>--long=never</tt>; it cannot take an argument. If  + "always", set <tt>int_var</tt> to 1; if "never", set <tt>int_var</tt> to 0; if  + "auto", set <tt>int_var</tt> to 1 if stdout is a tty or a pager,   0 otherwise.   </p>   </dd>   <dt class="hdlist1">  -<code>OPT_NOOP_NOARG(short, long)</code>  +<tt>OPT_NOOP_NOARG(short, long)</tt>   </dt>   <dd>   <p>  @@ -1138,42 +1142,42 @@  </p>   </dd>   </dl></div>  -<div class="paragraph"><p>The last element of the array must be <code>OPT_END()</code>.</p></div>  +<div class="paragraph"><p>The last element of the array must be <tt>OPT_END()</tt>.</p></div>   <div class="paragraph"><p>If not stated otherwise, interpret the arguments as follows:</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>short</code> is a character for the short option  - (e.g. <code>'e'</code> for <code>-e</code>, use <code>0</code> to omit),  +<tt>short</tt> is a character for the short option  + (e.g. <tt>'e'</tt> for <tt>-e</tt>, use <tt>0</tt> to omit),   </p>   </li>   <li>   <p>  -<code>long</code> is a string for the long option  - (e.g. <code>"example"</code> for <code>--example</code>, use <code>NULL</code> to omit),  +<tt>long</tt> is a string for the long option  + (e.g. <tt>"example"</tt> for <tt>--example</tt>, use <tt>NULL</tt> to omit),   </p>   </li>   <li>   <p>  -<code>int_var</code> is an integer variable,  +<tt>int_var</tt> is an integer variable,   </p>   </li>   <li>   <p>  -<code>str_var</code> is a string variable (<code>char *</code>),  +<tt>str_var</tt> is a string variable (<tt>char *</tt>),   </p>   </li>   <li>   <p>  -<code>arg_str</code> is the string that is shown as argument  - (e.g. <code>"branch"</code> will result in <code><branch></code>).  - If set to <code>NULL</code>, three dots (<code>...</code>) will be displayed.  +<tt>arg_str</tt> is the string that is shown as argument  + (e.g. <tt>"branch"</tt> will result in <tt><branch></tt>).  + If set to <tt>NULL</tt>, three dots (<tt>...</tt>) will be displayed.   </p>   </li>   <li>   <p>  -<code>description</code> is a short string to describe the effect of the option.  - It shall begin with a lower-case letter and a full stop (<code>.</code>) shall be  +<tt>description</tt> is a short string to describe the effect of the option.  + It shall begin with a lower-case letter and a full stop (<tt>.</tt>) shall be   omitted at the end.   </p>   </li>  @@ -1186,29 +1190,29 @@  <div class="paragraph"><p>The function must be defined in this form:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>int func(const struct option *opt, const char *arg, int unset)</code></pre>  +<pre><tt>int func(const struct option *opt, const char *arg, int unset)</tt></pre>   </div></div>   <div class="paragraph"><p>The callback mechanism is as follows:</p></div>   <div class="ulist"><ul>   <li>   <p>  -Inside <code>func</code>, the only interesting member of the structure  - given by <code>opt</code> is the void pointer <code>opt->value</code>.  - <code>*opt->value</code> will be the value that is saved into <code>var</code>, if you  - use <code>OPT_CALLBACK()</code>.  - For example, do <code>*(unsigned long *)opt->value = 42;</code> to get 42  - into an <code>unsigned long</code> variable.  +Inside <tt>func</tt>, the only interesting member of the structure  + given by <tt>opt</tt> is the void pointer <tt>opt->value</tt>.  + <tt>*opt->value</tt> will be the value that is saved into <tt>var</tt>, if you  + use <tt>OPT_CALLBACK()</tt>.  + For example, do <tt>*(unsigned long *)opt->value = 42;</tt> to get 42  + into an <tt>unsigned long</tt> variable.   </p>   </li>   <li>   <p>  -Return value <code>0</code> indicates success and non-zero return  - value will invoke <code>usage_with_options()</code> and, thus, die.  +Return value <tt>0</tt> indicates success and non-zero return  + value will invoke <tt>usage_with_options()</tt> and, thus, die.   </p>   </li>   <li>   <p>  -If the user negates the option, <code>arg</code> is <code>NULL</code> and <code>unset</code> is 1.  +If the user negates the option, <tt>arg</tt> is <tt>NULL</tt> and <tt>unset</tt> is 1.   </p>   </li>   </ul></div>  @@ -1220,21 +1224,21 @@  <div class="paragraph"><p>If you need, for example, option callbacks with optional arguments   or without arguments at all, or if you need other special cases,   that are not handled by the macros above, you need to specify the  -members of the <code>option</code> structure manually.</p></div>  +members of the <tt>option</tt> structure manually.</p></div>   <div class="paragraph"><p>This is not covered in this document, but well documented  -in <code>parse-options.h</code> itself.</p></div>  +in <tt>parse-options.h</tt> itself.</p></div>   </div>   </div>   <div class="sect1">   <h2 id="_examples">Examples</h2>   <div class="sectionbody">  -<div class="paragraph"><p>See <code>test-parse-options.c</code> and  -<code>builtin/add.c</code>,  -<code>builtin/clone.c</code>,  -<code>builtin/commit.c</code>,  -<code>builtin/fetch.c</code>,  -<code>builtin/fsck.c</code>,  -<code>builtin/rm.c</code>  +<div class="paragraph"><p>See <tt>test-parse-options.c</tt> and  +<tt>builtin/add.c</tt>,  +<tt>builtin/clone.c</tt>,  +<tt>builtin/commit.c</tt>,  +<tt>builtin/fetch.c</tt>,  +<tt>builtin/fsck.c</tt>,  +<tt>builtin/rm.c</tt>   for real-world examples.</p></div>   </div>   </div>  diff --git a/technical/api-quote.html b/technical/api-quote.html index 5e94706..cd7f665 100644 --- a/technical/api-quote.html +++ b/technical/api-quote.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>quote API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-ref-iteration.html b/technical/api-ref-iteration.html index 11ff17b..82133f5 100644 --- a/technical/api-ref-iteration.html +++ b/technical/api-ref-iteration.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>ref iteration API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -741,8 +745,8 @@  signature:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>int handle_one_ref(const char *refname, const unsigned char *sha1,  - int flags, void *cb_data);</code></pre>  +<pre><tt>int handle_one_ref(const char *refname, const unsigned char *sha1,  + int flags, void *cb_data);</tt></pre>   </div></div>   <div class="paragraph"><p>There are different kinds of iterate functions which all take a   callback of this type. The callback is then called for each found ref  @@ -756,54 +760,54 @@  <div class="ulist"><ul>   <li>   <p>  -<code>head_ref()</code> just iterates the head ref.  +<tt>head_ref()</tt> just iterates the head ref.   </p>   </li>   <li>   <p>  -<code>for_each_ref()</code> iterates all refs.  +<tt>for_each_ref()</tt> iterates all refs.   </p>   </li>   <li>   <p>  -<code>for_each_ref_in()</code> iterates all refs which have a defined prefix and  +<tt>for_each_ref_in()</tt> iterates all refs which have a defined prefix and   strips that prefix from the passed variable refname.   </p>   </li>   <li>   <p>  -<code>for_each_tag_ref()</code>, <code>for_each_branch_ref()</code>, <code>for_each_remote_ref()</code>,  - <code>for_each_replace_ref()</code> iterate refs from the respective area.  +<tt>for_each_tag_ref()</tt>, <tt>for_each_branch_ref()</tt>, <tt>for_each_remote_ref()</tt>,  + <tt>for_each_replace_ref()</tt> iterate refs from the respective area.   </p>   </li>   <li>   <p>  -<code>for_each_glob_ref()</code> iterates all refs that match the specified glob  +<tt>for_each_glob_ref()</tt> iterates all refs that match the specified glob   pattern.   </p>   </li>   <li>   <p>  -<code>for_each_glob_ref_in()</code> the previous and <code>for_each_ref_in()</code> combined.  +<tt>for_each_glob_ref_in()</tt> the previous and <tt>for_each_ref_in()</tt> combined.   </p>   </li>   <li>   <p>  -<code>head_ref_submodule()</code>, <code>for_each_ref_submodule()</code>,  - <code>for_each_ref_in_submodule()</code>, <code>for_each_tag_ref_submodule()</code>,  - <code>for_each_branch_ref_submodule()</code>, <code>for_each_remote_ref_submodule()</code>  +<tt>head_ref_submodule()</tt>, <tt>for_each_ref_submodule()</tt>,  + <tt>for_each_ref_in_submodule()</tt>, <tt>for_each_tag_ref_submodule()</tt>,  + <tt>for_each_branch_ref_submodule()</tt>, <tt>for_each_remote_ref_submodule()</tt>   do the same as the functions described above but for a specified   submodule.   </p>   </li>   <li>   <p>  -<code>for_each_rawref()</code> can be used to learn about broken ref and symref.  +<tt>for_each_rawref()</tt> can be used to learn about broken ref and symref.   </p>   </li>   <li>   <p>  -<code>for_each_reflog()</code> iterates each reflog file.  +<tt>for_each_reflog()</tt> iterates each reflog file.   </p>   </li>   </ul></div>  @@ -817,11 +821,11 @@  this:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>const char *path = "path/to/submodule"  +<pre><tt>const char *path = "path/to/submodule"   if (add_submodule_odb(path))  - die("Error submodule '%s' not populated.", path);</code></pre>  + die("Error submodule '%s' not populated.", path);</tt></pre>   </div></div>  -<div class="paragraph"><p><code>add_submodule_odb()</code> will return zero on success. If you  +<div class="paragraph"><p><tt>add_submodule_odb()</tt> will return zero on success. If you   do not do this you will get an error for each ref that it does not point   to a valid object.</p></div>   <div class="paragraph"><p>Note: As a side-effect of this you can not safely assume that all  @@ -834,7 +838,7 @@  <div class="sectionbody">   <div class="listingblock">   <div class="content">  -<pre><code>static int handle_remote_ref(const char *refname,  +<pre><tt>static int handle_remote_ref(const char *refname,   const unsigned char *sha1, int flags, void *cb_data)   {   struct strbuf *output = cb_data;  @@ -846,7 +850,7 @@    struct strbuf output = STRBUF_INIT;   for_each_remote_ref(handle_remote_ref, &output);  - printf("%s", output.buf);</code></pre>  + printf("%s", output.buf);</tt></pre>   </div></div>   </div>   </div>  diff --git a/technical/api-remote.html b/technical/api-remote.html index 35bff40..45a363f 100644 --- a/technical/api-remote.html +++ b/technical/api-remote.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Remotes configuration API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -748,7 +752,7 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>name</code>  +<tt>name</tt>   </dt>   <dd>   <p>  @@ -756,7 +760,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>url</code>  +<tt>url</tt>   </dt>   <dd>   <p>  @@ -764,7 +768,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>pushurl</code>  +<tt>pushurl</tt>   </dt>   <dd>   <p>  @@ -772,7 +776,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>push</code>  +<tt>push</tt>   </dt>   <dd>   <p>  @@ -782,7 +786,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>fetch</code>  +<tt>fetch</tt>   </dt>   <dd>   <p>  @@ -792,7 +796,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>fetch_tags</code>  +<tt>fetch_tags</tt>   </dt>   <dd>   <p>  @@ -804,7 +808,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>receivepack</code>, <code>uploadpack</code>  +<tt>receivepack</tt>, <tt>uploadpack</tt>   </dt>   <dd>   <p>  @@ -813,7 +817,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>http_proxy</code>  +<tt>http_proxy</tt>   </dt>   <dd>   <p>  @@ -853,7 +857,7 @@  <div class="paragraph"><p>It contains:</p></div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>name</code>  +<tt>name</tt>   </dt>   <dd>   <p>  @@ -861,7 +865,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>refname</code>  +<tt>refname</tt>   </dt>   <dd>   <p>  @@ -869,7 +873,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>remote_name</code>  +<tt>remote_name</tt>   </dt>   <dd>   <p>  @@ -877,7 +881,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>remote</code>  +<tt>remote</tt>   </dt>   <dd>   <p>  @@ -885,7 +889,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>merge_name</code>  +<tt>merge_name</tt>   </dt>   <dd>   <p>  @@ -893,7 +897,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>merge</code>  +<tt>merge</tt>   </dt>   <dd>   <p>  @@ -903,7 +907,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>merge_nr</code>  +<tt>merge_nr</tt>   </dt>   <dd>   <p>  diff --git a/technical/api-revision-walking.html b/technical/api-revision-walking.html index e8b8a8d..f50212a 100644 --- a/technical/api-revision-walking.html +++ b/technical/api-revision-walking.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>revision walking API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -754,26 +758,26 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>init_revisions</code>  +<tt>init_revisions</tt>   </dt>   <dd>   <p>   Initialize a rev_info structure with default values. The second  - parameter may be NULL or can be prefix path, and then the <code>.prefix</code>  + parameter may be NULL or can be prefix path, and then the <tt>.prefix</tt>   variable will be set to it. This is typically the first function you   want to call when you want to deal with a revision list. After calling   this function, you are free to customize options, like set  - <code>.ignore_merges</code> to 0 if you don’t want to ignore merges, and so on. See  - <code>revision.h</code> for a complete list of available options.  + <tt>.ignore_merges</tt> to 0 if you don’t want to ignore merges, and so on. See  + <tt>revision.h</tt> for a complete list of available options.   </p>   </dd>   <dt class="hdlist1">  -<code>add_pending_object</code>  +<tt>add_pending_object</tt>   </dt>   <dd>   <p>   This function can be used if you want to add commit objects as revision  - information. You can use the <code>UNINTERESTING</code> object flag to indicate if  + information. You can use the <tt>UNINTERESTING</tt> object flag to indicate if   you want to include or exclude the given commit (and commits reachable   from the given commit) from the revision list.   </p>  @@ -789,11 +793,11 @@  </div>   </dd>   <dt class="hdlist1">  -<code>setup_revisions</code>  +<tt>setup_revisions</tt>   </dt>   <dd>   <p>  - Parse revision information, filling in the <code>rev_info</code> structure, and  + Parse revision information, filling in the <tt>rev_info</tt> structure, and   removing the used arguments from the argument list. Returns the number   of arguments left that weren’t recognized, which are also moved to the   head of the argument list. The last parameter is used in case no  @@ -801,7 +805,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>prepare_revision_walk</code>  +<tt>prepare_revision_walk</tt>   </dt>   <dd>   <p>  @@ -811,17 +815,17 @@  </p>   </dd>   <dt class="hdlist1">  -<code>get_revision</code>  +<tt>get_revision</tt>   </dt>   <dd>   <p>  - Takes a pointer to a <code>rev_info</code> structure and iterates over it,  - returning a <code>struct commit *</code> each time you call it. The end of the  + Takes a pointer to a <tt>rev_info</tt> structure and iterates over it,  + returning a <tt>struct commit *</tt> each time you call it. The end of the   revision list is indicated by returning a NULL pointer.   </p>   </dd>   <dt class="hdlist1">  -<code>reset_revision_walk</code>  +<tt>reset_revision_walk</tt>   </dt>   <dd>   <p>  diff --git a/technical/api-run-command.html b/technical/api-run-command.html index 7704b26..1869025 100644 --- a/technical/api-run-command.html +++ b/technical/api-run-command.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>run-command API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -749,17 +753,17 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>start_command</code>  +<tt>start_command</tt>   </dt>   <dd>   <p>  - Start a sub-process. Takes a pointer to a <code>struct child_process</code>  + Start a sub-process. Takes a pointer to a <tt>struct child_process</tt>   that specifies the details and returns pipe FDs (if requested).   See below for details.   </p>   </dd>   <dt class="hdlist1">  -<code>finish_command</code>  +<tt>finish_command</tt>   </dt>   <dd>   <p>  @@ -768,27 +772,27 @@  </p>   </dd>   <dt class="hdlist1">  -<code>run_command</code>  +<tt>run_command</tt>   </dt>   <dd>   <p>   A convenience function that encapsulates a sequence of   start_command() followed by finish_command(). Takes a pointer  - to a <code>struct child_process</code> that specifies the details.  + to a <tt>struct child_process</tt> that specifies the details.   </p>   </dd>   <dt class="hdlist1">  -<code>run_command_v_opt</code>, <code>run_command_v_opt_cd_env</code>  +<tt>run_command_v_opt</tt>, <tt>run_command_v_opt_cd_env</tt>   </dt>   <dd>   <p>   Convenience functions that encapsulate a sequence of   start_command() followed by finish_command(). The argument argv   specifies the program and its arguments. The argument opt is zero  - or more of the flags <code>RUN_COMMAND_NO_STDIN</code>, <code>RUN_GIT_CMD</code>,  - <code>RUN_COMMAND_STDOUT_TO_STDERR</code>, or <code>RUN_SILENT_EXEC_FAILURE</code>  + or more of the flags <tt>RUN_COMMAND_NO_STDIN</tt>, <tt>RUN_GIT_CMD</tt>,  + <tt>RUN_COMMAND_STDOUT_TO_STDERR</tt>, or <tt>RUN_SILENT_EXEC_FAILURE</tt>   that correspond to the members .no_stdin, .git_cmd,  - .stdout_to_stderr, .silent_exec_failure of <code>struct child_process</code>.  + .stdout_to_stderr, .silent_exec_failure of <tt>struct child_process</tt>.   The argument dir corresponds the member .dir. The argument env   corresponds to the member .env.   </p>  @@ -823,17 +827,17 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>start_async</code>  +<tt>start_async</tt>   </dt>   <dd>   <p>  - Run a function asynchronously. Takes a pointer to a <code>struct  - async</code> that specifies the details and returns a set of pipe FDs  + Run a function asynchronously. Takes a pointer to a <tt>struct  + async</tt> that specifies the details and returns a set of pipe FDs   for communication with the function. See below for details.   </p>   </dd>   <dt class="hdlist1">  -<code>finish_async</code>  +<tt>finish_async</tt>   </dt>   <dd>   <p>  @@ -842,7 +846,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>run_hook</code>  +<tt>run_hook</tt>   </dt>   <dd>   <p>  @@ -871,7 +875,7 @@  <div class="ulist"><ul>   <li>   <p>  -<code>struct child_process</code>  +<tt>struct child_process</tt>   </p>   </li>   </ul></div>  @@ -932,19 +936,19 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>.in: Returns the writable pipe end into which the caller writes;  - the readable end of the pipe becomes the child's stdin.</code></pre>  +<pre><tt>.in: Returns the writable pipe end into which the caller writes;  + the readable end of the pipe becomes the child's stdin.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>.out, .err: Returns the readable pipe end from which the caller  +<pre><tt>.out, .err: Returns the readable pipe end from which the caller   reads; the writable end of the pipe end becomes child's  - stdout/stderr.</code></pre>  + stdout/stderr.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The caller of start_command() must close the so returned FDs  -after it has completed reading from/writing to it!</code></pre>  +<pre><tt>The caller of start_command() must close the so returned FDs  +after it has completed reading from/writing to it!</tt></pre>   </div></div>   </li>   <li>  @@ -953,14 +957,14 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>.in: The FD must be readable; it becomes child's stdin.  +<pre><tt>.in: The FD must be readable; it becomes child's stdin.   .out: The FD must be writable; it becomes child's stdout.  -.err: The FD must be writable; it becomes child's stderr.</code></pre>  +.err: The FD must be writable; it becomes child's stderr.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The specified FD is closed by start_command(), even if it fails to  -run the sub-process!</code></pre>  +<pre><tt>The specified FD is closed by start_command(), even if it fails to  +run the sub-process!</tt></pre>   </div></div>   </li>   <li>  @@ -970,15 +974,15 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>.no_stdin, .no_stdout, .no_stderr: The respective channel is  - redirected to /dev/null.</code></pre>  +<pre><tt>.no_stdin, .no_stdout, .no_stderr: The respective channel is  + redirected to /dev/null.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>.stdout_to_stderr: stdout of the child is redirected to its  +<pre><tt>.stdout_to_stderr: stdout of the child is redirected to its   stderr. This happens after stderr is itself redirected.   So stdout will follow stderr to wherever it is  - redirected.</code></pre>  + redirected.</tt></pre>   </div></div>   </li>   </ol></div>  @@ -1007,7 +1011,7 @@  <div class="ulist"><ul>   <li>   <p>  -<code>struct async</code>  +<tt>struct async</tt>   </p>   </li>   </ul></div>  @@ -1063,20 +1067,20 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>.in: Returns the writable pipe end into which the caller  +<pre><tt>.in: Returns the writable pipe end into which the caller   writes; the readable end of the pipe becomes the function's  -in argument.</code></pre>  +in argument.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>.out: Returns the readable pipe end from which the caller  +<pre><tt>.out: Returns the readable pipe end from which the caller   reads; the writable end of the pipe becomes the function's  -out argument.</code></pre>  +out argument.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The caller of start_async() must close the returned FDs after it  -has completed reading from/writing from them.</code></pre>  +<pre><tt>The caller of start_async() must close the returned FDs after it  +has completed reading from/writing from them.</tt></pre>   </div></div>   </li>   <li>  @@ -1085,20 +1089,20 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>.in: The FD must be readable; it becomes the function's in.  -.out: The FD must be writable; it becomes the function's out.</code></pre>  +<pre><tt>.in: The FD must be readable; it becomes the function's in.  +.out: The FD must be writable; it becomes the function's out.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The specified FD is closed by start_async(), even if it fails to  -run the function.</code></pre>  +<pre><tt>The specified FD is closed by start_async(), even if it fails to  +run the function.</tt></pre>   </div></div>   </li>   </ol></div>   <div class="paragraph"><p>The function pointer in .proc has the following signature:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>int proc(int in, int out, void *data);</code></pre>  +<pre><tt>int proc(int in, int out, void *data);</tt></pre>   </div></div>   <div class="olist arabic"><ol class="arabic">   <li>  diff --git a/technical/api-setup.html b/technical/api-setup.html index fa7ef96..ed9ba7b 100644 --- a/technical/api-setup.html +++ b/technical/api-setup.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>setup API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/api-sha1-array.html b/technical/api-sha1-array.html index d5fce88..646c54b 100644 --- a/technical/api-sha1-array.html +++ b/technical/api-sha1-array.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>sha1-array API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -747,14 +751,14 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct sha1_array</code>  +<tt>struct sha1_array</tt>   </dt>   <dd>   <p>   A single array of SHA-1 hashes. This should be initialized by  - assignment from <code>SHA1_ARRAY_INIT</code>. The <code>sha1</code> member contains  - the actual data. The <code>nr</code> member contains the number of items in  - the set. The <code>alloc</code> and <code>sorted</code> members are used internally,  + assignment from <tt>SHA1_ARRAY_INIT</tt>. The <tt>sha1</tt> member contains  + the actual data. The <tt>nr</tt> member contains the number of items in  + the set. The <tt>alloc</tt> and <tt>sorted</tt> members are used internally,   and should not be needed by API callers.   </p>   </dd>  @@ -766,7 +770,7 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>sha1_array_append</code>  +<tt>sha1_array_append</tt>   </dt>   <dd>   <p>  @@ -776,7 +780,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>sha1_array_lookup</code>  +<tt>sha1_array_lookup</tt>   </dt>   <dd>   <p>  @@ -787,7 +791,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>sha1_array_clear</code>  +<tt>sha1_array_clear</tt>   </dt>   <dd>   <p>  @@ -796,7 +800,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>sha1_array_for_each_unique</code>  +<tt>sha1_array_for_each_unique</tt>   </dt>   <dd>   <p>  @@ -813,7 +817,7 @@  <div class="sectionbody">   <div class="listingblock">   <div class="content">  -<pre><code>void print_callback(const unsigned char sha1[20],  +<pre><tt>void print_callback(const unsigned char sha1[20],   void *data)   {   printf("%s\n", sha1_to_hex(sha1));  @@ -841,7 +845,7 @@  * in linear time.   */   sha1_array_for_each_unique(&hashes, print_callback, NULL);  -}</code></pre>  +}</tt></pre>   </div></div>   </div>   </div>  diff --git a/technical/api-sigchain.html b/technical/api-sigchain.html index ed6de92..2860ae1 100644 --- a/technical/api-sigchain.html +++ b/technical/api-sigchain.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>sigchain API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -759,7 +763,7 @@  and installation code should look something like:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> void clean_foo_on_signal(int sig)  +<pre><tt> void clean_foo_on_signal(int sig)   {   clean_foo();   sigchain_pop(sig);  @@ -771,7 +775,7 @@  sigchain_push_common(clean_foo_on_signal);   mess_up_foo();   clean_foo();  - }</code></pre>  + }</tt></pre>   </div></div>   <div class="paragraph"><p>Handlers are given the typedef of sigchain_fun. This is the same type   that is given to signal() or sigaction(). It is perfectly reasonable to  diff --git a/technical/api-strbuf.html b/technical/api-strbuf.html index 9469ac7..c4829cc 100644 --- a/technical/api-strbuf.html +++ b/technical/api-strbuf.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>strbuf API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -747,22 +751,22 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -The <code>buf</code> member is never NULL, so it can be used in any usual C  +The <tt>buf</tt> member is never NULL, so it can be used in any usual C   string operations safely. strbuf’s <em>have</em> to be initialized either by  -<code>strbuf_init()</code> or by <code>= STRBUF_INIT</code> before the invariants, though.  +<tt>strbuf_init()</tt> or by <tt>= STRBUF_INIT</tt> before the invariants, though.   </p>  -<div class="paragraph"><p>Do <strong>not</strong> assume anything on what <code>buf</code> really is (e.g. if it is  -allocated memory or not), use <code>strbuf_detach()</code> to unwrap a memory  +<div class="paragraph"><p>Do <strong>not</strong> assume anything on what <tt>buf</tt> really is (e.g. if it is  +allocated memory or not), use <tt>strbuf_detach()</tt> to unwrap a memory   buffer from its strbuf shell in a safe way. That is the sole supported  -way. This will give you a malloced buffer that you can later <code>free()</code>.</p></div>  +way. This will give you a malloced buffer that you can later <tt>free()</tt>.</p></div>   <div class="paragraph"><p>However, it is totally safe to modify anything in the string pointed by  -the <code>buf</code> member, between the indices <code>0</code> and <code>len-1</code> (inclusive).</p></div>  +the <tt>buf</tt> member, between the indices <tt>0</tt> and <tt>len-1</tt> (inclusive).</p></div>   </li>   <li>   <p>  -The <code>buf</code> member is a byte array that has at least <code>len + 1</code> bytes  - allocated. The extra byte is used to store a <code>'\0'</code>, allowing the  - <code>buf</code> member to be a valid C-string. Every strbuf function ensure this  +The <tt>buf</tt> member is a byte array that has at least <tt>len + 1</tt> bytes  + allocated. The extra byte is used to store a <tt>'\0'</tt>, allowing the  + <tt>buf</tt> member to be a valid C-string. Every strbuf function ensure this   invariant is preserved.   </p>   <div class="admonitionblock">  @@ -776,22 +780,22 @@  </div>   <div class="listingblock">   <div class="content">  -<pre><code>strbuf_grow(sb, SOME_SIZE); <b><1></b>  -strbuf_setlen(sb, sb->len + SOME_OTHER_SIZE);</code></pre>  +<pre><tt>strbuf_grow(sb, SOME_SIZE); <b><1></b>  +strbuf_setlen(sb, sb->len + SOME_OTHER_SIZE);</tt></pre>   </div></div>   <div class="colist arabic"><ol>   <li>   <p>  -Here, the memory array starting at <code>sb->buf</code>, and of length  -<code>strbuf_avail(sb)</code> is all yours, and you can be sure that  -<code>strbuf_avail(sb)</code> is at least <code>SOME_SIZE</code>.  +Here, the memory array starting at <tt>sb->buf</tt>, and of length  +<tt>strbuf_avail(sb)</tt> is all yours, and you can be sure that  +<tt>strbuf_avail(sb)</tt> is at least <tt>SOME_SIZE</tt>.   </p>   <div class="admonitionblock">   <table><tr>   <td class="icon">   <div class="title">Note</div>   </td>  -<td class="content"><code>SOME_OTHER_SIZE</code> must be smaller or equal to <code>strbuf_avail(sb)</code>.</td>  +<td class="content"><tt>SOME_OTHER_SIZE</tt> must be smaller or equal to <tt>strbuf_avail(sb)</tt>.</td>   </tr></table>   </div>   <div class="paragraph"><p>Doing so is safe, though if it has to be done in many places, adding the  @@ -801,9 +805,9 @@  <td class="icon">   <div class="title">Warning</div>   </td>  -<td class="content">Do <em>not</em> assume that the area that is yours is of size <code>alloc  -- 1</code> even if it’s true in the current implementation. Alloc is somehow a  -"private" member that should not be messed with. Use <code>strbuf_avail()</code>  +<td class="content">Do <em>not</em> assume that the area that is yours is of size <tt>alloc  +- 1</tt> even if it’s true in the current implementation. Alloc is somehow a  +"private" member that should not be messed with. Use <tt>strbuf_avail()</tt>   instead.</td>   </tr></table>   </div>  @@ -819,12 +823,12 @@  <div class="ulist"><ul>   <li>   <p>  -<code>struct strbuf</code>  +<tt>struct strbuf</tt>   </p>   </li>   </ul></div>  -<div class="paragraph"><p>This is the string buffer structure. The <code>len</code> member can be used to  -determine the current length of the string, and <code>buf</code> member provides access to  +<div class="paragraph"><p>This is the string buffer structure. The <tt>len</tt> member can be used to  +determine the current length of the string, and <tt>buf</tt> member provides access to   the string itself.</p></div>   </div>   </div>  @@ -838,7 +842,7 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>strbuf_init</code>  +<tt>strbuf_init</tt>   </dt>   <dd>   <p>  @@ -847,7 +851,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_release</code>  +<tt>strbuf_release</tt>   </dt>   <dd>   <p>  @@ -856,17 +860,17 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_detach</code>  +<tt>strbuf_detach</tt>   </dt>   <dd>   <p>   Detach the string from the strbuf and returns it; you now own the   storage the string occupies and it is your responsibility from then on  - to release it with <code>free(3)</code> when you are done with it.  + to release it with <tt>free(3)</tt> when you are done with it.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_attach</code>  +<tt>strbuf_attach</tt>   </dt>   <dd>   <p>  @@ -879,7 +883,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_swap</code>  +<tt>strbuf_swap</tt>   </dt>   <dd>   <p>  @@ -894,7 +898,7 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>strbuf_avail</code>  +<tt>strbuf_avail</tt>   </dt>   <dd>   <p>  @@ -902,31 +906,31 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_grow</code>  +<tt>strbuf_grow</tt>   </dt>   <dd>   <p>   Ensure that at least this amount of unused memory is available after  - <code>len</code>. This is used when you know a typical size for what you will add  + <tt>len</tt>. This is used when you know a typical size for what you will add   and want to avoid repetitive automatic resizing of the underlying buffer.   This is never a needed operation, but can be critical for performance in   some cases.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_setlen</code>  +<tt>strbuf_setlen</tt>   </dt>   <dd>   <p>   Set the length of the buffer to a given value. This function does <strong>not</strong>  - allocate new memory, so you should not perform a <code>strbuf_setlen()</code> to a  - length that is larger than <code>len + strbuf_avail()</code>. <code>strbuf_setlen()</code> is  + allocate new memory, so you should not perform a <tt>strbuf_setlen()</tt> to a  + length that is larger than <tt>len + strbuf_avail()</tt>. <tt>strbuf_setlen()</tt> is   just meant as a <em>please fix invariants from this strbuf I just messed   with</em>.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_reset</code>  +<tt>strbuf_reset</tt>   </dt>   <dd>   <p>  @@ -941,7 +945,7 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>strbuf_rtrim</code>  +<tt>strbuf_rtrim</tt>   </dt>   <dd>   <p>  @@ -949,7 +953,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_cmp</code>  +<tt>strbuf_cmp</tt>   </dt>   <dd>   <p>  @@ -973,13 +977,13 @@  </td>   <td class="content">All of the functions in this section will grow the buffer as necessary.   If they fail for some reason other than memory shortage and the buffer hadn’t  -been allocated before (i.e. the <code>struct strbuf</code> was set to <code>STRBUF_INIT</code>),  +been allocated before (i.e. the <tt>struct strbuf</tt> was set to <tt>STRBUF_INIT</tt>),   then they will free() it.</td>   </tr></table>   </div>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>strbuf_addch</code>  +<tt>strbuf_addch</tt>   </dt>   <dd>   <p>  @@ -987,7 +991,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_insert</code>  +<tt>strbuf_insert</tt>   </dt>   <dd>   <p>  @@ -996,7 +1000,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_remove</code>  +<tt>strbuf_remove</tt>   </dt>   <dd>   <p>  @@ -1004,16 +1008,16 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_splice</code>  +<tt>strbuf_splice</tt>   </dt>   <dd>   <p>  - Remove the bytes between <code>pos..pos+len</code> and replace it with the given  + Remove the bytes between <tt>pos..pos+len</tt> and replace it with the given   data.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_add_commented_lines</code>  +<tt>strbuf_add_commented_lines</tt>   </dt>   <dd>   <p>  @@ -1022,7 +1026,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_add</code>  +<tt>strbuf_add</tt>   </dt>   <dd>   <p>  @@ -1030,7 +1034,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_addstr</code>  +<tt>strbuf_addstr</tt>   </dt>   <dd>   <p>  @@ -1047,16 +1051,16 @@  </div>   <div class="listingblock">   <div class="content">  -<pre><code>strbuf_add(..., s, strlen(s));</code></pre>  +<pre><tt>strbuf_add(..., s, strlen(s));</tt></pre>   </div></div>   <div class="paragraph"><p>Meaning that this is efficient to write things like:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>strbuf_addstr(sb, "immediate string");</code></pre>  +<pre><tt>strbuf_addstr(sb, "immediate string");</tt></pre>   </div></div>   </dd>   <dt class="hdlist1">  -<code>strbuf_addbuf</code>  +<tt>strbuf_addbuf</tt>   </dt>   <dd>   <p>  @@ -1064,7 +1068,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_adddup</code>  +<tt>strbuf_adddup</tt>   </dt>   <dd>   <p>  @@ -1073,7 +1077,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_expand</code>  +<tt>strbuf_expand</tt>   </dt>   <dd>   <p>  @@ -1081,35 +1085,35 @@  placeholders. To that end, it parses the string and calls the specified   function for every percent sign found.   </p>  -<div class="paragraph"><p>The callback function is given a pointer to the character after the <code>%</code>  +<div class="paragraph"><p>The callback function is given a pointer to the character after the <tt>%</tt>   and a pointer to the struct strbuf. It is expected to add the expanded   version of the placeholder to the strbuf, e.g. to add a newline  -character if the letter <code>n</code> appears after a <code>%</code>. The function returns  -the length of the placeholder recognized and <code>strbuf_expand()</code> skips  +character if the letter <tt>n</tt> appears after a <tt>%</tt>. The function returns  +the length of the placeholder recognized and <tt>strbuf_expand()</tt> skips   over it.</p></div>  -<div class="paragraph"><p>The format <code>%%</code> is automatically expanded to a single <code>%</code> as a quoting  -mechanism; callers do not need to handle the <code>%</code> placeholder themselves,  +<div class="paragraph"><p>The format <tt>%%</tt> is automatically expanded to a single <tt>%</tt> as a quoting  +mechanism; callers do not need to handle the <tt>%</tt> placeholder themselves,   and the callback function will not be invoked for this placeholder.</p></div>   <div class="paragraph"><p>All other characters (non-percent and not skipped ones) are copied   verbatim to the strbuf. If the callback returned zero, meaning that the   placeholder is unknown, then the percent sign is copied, too.</p></div>   <div class="paragraph"><p>In order to facilitate caching and to make it possible to give  -parameters to the callback, <code>strbuf_expand()</code> passes a context pointer,  +parameters to the callback, <tt>strbuf_expand()</tt> passes a context pointer,   which can be used by the programmer of the callback as she sees fit.</p></div>   </dd>   <dt class="hdlist1">  -<code>strbuf_expand_dict_cb</code>  +<tt>strbuf_expand_dict_cb</tt>   </dt>   <dd>   <p>  - Used as callback for <code>strbuf_expand()</code>, expects an array of  + Used as callback for <tt>strbuf_expand()</tt>, expects an array of   struct strbuf_expand_dict_entry as context, i.e. pairs of   placeholder and replacement string. The array needs to be   terminated by an entry with placeholder set to NULL.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_addbuf_percentquote</code>  +<tt>strbuf_addbuf_percentquote</tt>   </dt>   <dd>   <p>  @@ -1120,7 +1124,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_humanise_bytes</code>  +<tt>strbuf_humanise_bytes</tt>   </dt>   <dd>   <p>  @@ -1129,7 +1133,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_addf</code>  +<tt>strbuf_addf</tt>   </dt>   <dd>   <p>  @@ -1137,7 +1141,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_commented_addf</code>  +<tt>strbuf_commented_addf</tt>   </dt>   <dd>   <p>  @@ -1146,7 +1150,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_fread</code>  +<tt>strbuf_fread</tt>   </dt>   <dd>   <p>  @@ -1158,14 +1162,14 @@  <div class="title">Note</div>   </td>   <td class="content">The buffer is rewound if the read fails. If -1 is returned,  -<code>errno</code> must be consulted, like you would do for <code>read(3)</code>.  -<code>strbuf_read()</code>, <code>strbuf_read_file()</code> and <code>strbuf_getline()</code> has the  +<tt>errno</tt> must be consulted, like you would do for <tt>read(3)</tt>.  +<tt>strbuf_read()</tt>, <tt>strbuf_read_file()</tt> and <tt>strbuf_getline()</tt> has the   same behaviour as well.</td>   </tr></table>   </div>   </dd>   <dt class="hdlist1">  -<code>strbuf_read</code>  +<tt>strbuf_read</tt>   </dt>   <dd>   <p>  @@ -1174,7 +1178,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_read_file</code>  +<tt>strbuf_read_file</tt>   </dt>   <dd>   <p>  @@ -1183,7 +1187,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_readlink</code>  +<tt>strbuf_readlink</tt>   </dt>   <dd>   <p>  @@ -1192,40 +1196,40 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_getline</code>  +<tt>strbuf_getline</tt>   </dt>   <dd>   <p>   Read a line from a FILE *, overwriting the existing contents   of the strbuf. The second argument specifies the line  - terminator character, typically <code>'\n'</code>.  + terminator character, typically <tt>'\n'</tt>.   Reading stops after the terminator or at EOF. The terminator   is removed from the buffer before returning. Returns 0 unless  - there was nothing left before EOF, in which case it returns <code>EOF</code>.  + there was nothing left before EOF, in which case it returns <tt>EOF</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_getwholeline</code>  +<tt>strbuf_getwholeline</tt>   </dt>   <dd>   <p>  - Like <code>strbuf_getline</code>, but keeps the trailing terminator (if  + Like <tt>strbuf_getline</tt>, but keeps the trailing terminator (if   any) in the buffer.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_getwholeline_fd</code>  +<tt>strbuf_getwholeline_fd</tt>   </dt>   <dd>   <p>  - Like <code>strbuf_getwholeline</code>, but operates on a file descriptor.  + Like <tt>strbuf_getwholeline</tt>, but operates on a file descriptor.   It reads one character at a time, so it is very slow. Do not   use it unless you need the correct position in the file   descriptor.   </p>   </dd>   <dt class="hdlist1">  -<code>stripspace</code>  +<tt>stripspace</tt>   </dt>   <dd>   <p>  @@ -1234,37 +1238,37 @@  </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_split_buf</code>  +<tt>strbuf_split_buf</tt>   </dt>   <dt class="hdlist1">  -<code>strbuf_split_str</code>  +<tt>strbuf_split_str</tt>   </dt>   <dt class="hdlist1">  -<code>strbuf_split_max</code>  +<tt>strbuf_split_max</tt>   </dt>   <dt class="hdlist1">  -<code>strbuf_split</code>  +<tt>strbuf_split</tt>   </dt>   <dd>   <p>   Split a string or strbuf into a list of strbufs at a specified   terminator character. The returned substrings include the  - terminator characters. Some of these functions take a <code>max</code>  + terminator characters. Some of these functions take a <tt>max</tt>   parameter, which, if positive, limits the output to that   number of substrings.   </p>   </dd>   <dt class="hdlist1">  -<code>strbuf_list_free</code>  +<tt>strbuf_list_free</tt>   </dt>   <dd>   <p>   Free a list of strbufs (for example, the return values of the  - <code>strbuf_split()</code> functions).  + <tt>strbuf_split()</tt> functions).   </p>   </dd>   <dt class="hdlist1">  -<code>launch_editor</code>  +<tt>launch_editor</tt>   </dt>   <dd>   <p>  diff --git a/technical/api-string-list.html b/technical/api-string-list.html index 608fccf..d03912d 100644 --- a/technical/api-string-list.html +++ b/technical/api-string-list.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>string-list API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -738,81 +742,81 @@  <div class="sectionbody">   <div class="paragraph"><p>The string_list API offers a data structure and functions to handle   sorted and unsorted string lists. A "sorted" list is one whose  -entries are sorted by string value in <code>strcmp()</code> order.</p></div>  +entries are sorted by string value in <tt>strcmp()</tt> order.</p></div>   <div class="paragraph"><p>The <em>string_list</em> struct used to be called <em>path_list</em>, but was renamed   because it is not specific to paths.</p></div>   <div class="paragraph"><p>The caller:</p></div>   <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Allocates and clears a <code>struct string_list</code> variable.  +Allocates and clears a <tt>struct string_list</tt> variable.   </p>   </li>   <li>   <p>  -Initializes the members. You might want to set the flag <code>strdup_strings</code>  +Initializes the members. You might want to set the flag <tt>strdup_strings</tt>   if the strings should be strdup()ed. For example, this is necessary   when you add something like git_path("…"), since that function returns   a static buffer that will change with the next call to git_path().   </p>  -<div class="paragraph"><p>If you need something advanced, you can manually malloc() the <code>items</code>  +<div class="paragraph"><p>If you need something advanced, you can manually malloc() the <tt>items</tt>   member (you need this if you add things later) and you should set the  -<code>nr</code> and <code>alloc</code> members in that case, too.</p></div>  +<tt>nr</tt> and <tt>alloc</tt> members in that case, too.</p></div>   </li>   <li>   <p>  -Adds new items to the list, using <code>string_list_append</code>,  - <code>string_list_append_nodup</code>, <code>string_list_insert</code>,  - <code>string_list_split</code>, and/or <code>string_list_split_in_place</code>.  +Adds new items to the list, using <tt>string_list_append</tt>,  + <tt>string_list_append_nodup</tt>, <tt>string_list_insert</tt>,  + <tt>string_list_split</tt>, and/or <tt>string_list_split_in_place</tt>.   </p>   </li>   <li>   <p>  -Can check if a string is in the list using <code>string_list_has_string</code> or  - <code>unsorted_string_list_has_string</code> and get it from the list using  - <code>string_list_lookup</code> for sorted lists.  +Can check if a string is in the list using <tt>string_list_has_string</tt> or  + <tt>unsorted_string_list_has_string</tt> and get it from the list using  + <tt>string_list_lookup</tt> for sorted lists.   </p>   </li>   <li>   <p>  -Can sort an unsorted list using <code>sort_string_list</code>.  +Can sort an unsorted list using <tt>sort_string_list</tt>.   </p>   </li>   <li>   <p>   Can remove duplicate items from a sorted list using  - <code>string_list_remove_duplicates</code>.  + <tt>string_list_remove_duplicates</tt>.   </p>   </li>   <li>   <p>   Can remove individual items of an unsorted list using  - <code>unsorted_string_list_delete_item</code>.  + <tt>unsorted_string_list_delete_item</tt>.   </p>   </li>   <li>   <p>   Can remove items not matching a criterion from a sorted or unsorted  - list using <code>filter_string_list</code>, or remove empty strings using  - <code>string_list_remove_empty_items</code>.  + list using <tt>filter_string_list</tt>, or remove empty strings using  + <tt>string_list_remove_empty_items</tt>.   </p>   </li>   <li>   <p>  -Finally it should free the list using <code>string_list_clear</code>.  +Finally it should free the list using <tt>string_list_clear</tt>.   </p>   </li>   </ol></div>   <div class="paragraph"><p>Example:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code>struct string_list list = STRING_LIST_INIT_NODUP;  +<pre><tt>struct string_list list = STRING_LIST_INIT_NODUP;   int i;     string_list_append(&list, "foo");   string_list_append(&list, "bar");   for (i = 0; i < list.nr; i++)  - printf("%s\n", list.items[i].string)</code></pre>  + printf("%s\n", list.items[i].string)</tt></pre>   </div></div>   <div class="admonitionblock">   <table><tr>  @@ -820,8 +824,8 @@  <div class="title">Note</div>   </td>   <td class="content">It is more efficient to build an unsorted list and sort it  -afterwards, instead of building a sorted list (<code>O(n log n)</code> instead of  -<code>O(n^2)</code>).</td>  +afterwards, instead of building a sorted list (<tt>O(n log n)</tt> instead of  +<tt>O(n^2)</tt>).</td>   </tr></table>   </div>   <div class="paragraph"><p>+  @@ -840,7 +844,7 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>filter_string_list</code>  +<tt>filter_string_list</tt>   </dt>   <dd>   <p>  @@ -852,7 +856,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>string_list_remove_empty_items</code>  +<tt>string_list_remove_empty_items</tt>   </dt>   <dd>   <p>  @@ -862,7 +866,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>print_string_list</code>  +<tt>print_string_list</tt>   </dt>   <dd>   <p>  @@ -872,13 +876,13 @@  </p>   </dd>   <dt class="hdlist1">  -<code>string_list_clear</code>  +<tt>string_list_clear</tt>   </dt>   <dd>   <p>  - Free a string_list. The <code>string</code> pointer of the items will be freed in  - case the <code>strdup_strings</code> member of the string_list is set. The second  - parameter controls if the <code>util</code> pointer of the items should be freed  + Free a string_list. The <tt>string</tt> pointer of the items will be freed in  + case the <tt>strdup_strings</tt> member of the string_list is set. The second  + parameter controls if the <tt>util</tt> pointer of the items should be freed   or not.   </p>   </dd>  @@ -890,7 +894,7 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>string_list_has_string</code>  +<tt>string_list_has_string</tt>   </dt>   <dd>   <p>  @@ -898,22 +902,22 @@  </p>   </dd>   <dt class="hdlist1">  -<code>string_list_insert</code>  +<tt>string_list_insert</tt>   </dt>   <dd>   <p>   Insert a new element to the string_list. The returned pointer can be  - handy if you want to write something to the <code>util</code> pointer of the  + handy if you want to write something to the <tt>util</tt> pointer of the   string_list_item containing the just added string. If the given   string already exists the insertion will be skipped and the   pointer to the existing item returned.   </p>   <div class="paragraph"><p>Since this function uses xrealloc() (which die()s if it fails) if the   list needs to grow, it is safe not to check the pointer. I.e. you may  -write <code>string_list_insert(...)->util = ...;</code>.</p></div>  +write <tt>string_list_insert(...)->util = ...;</tt>.</p></div>   </dd>   <dt class="hdlist1">  -<code>string_list_lookup</code>  +<tt>string_list_lookup</tt>   </dt>   <dd>   <p>  @@ -922,7 +926,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>string_list_remove_duplicates</code>  +<tt>string_list_remove_duplicates</tt>   </dt>   <dd>   <p>  @@ -939,86 +943,86 @@  </p>   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>string_list_append</code>  +<tt>string_list_append</tt>   </dt>   <dd>   <p>   Append a new string to the end of the string_list. If  - <code>strdup_string</code> is set, then the string argument is copied;  - otherwise the new <code>string_list_entry</code> refers to the input  + <tt>strdup_string</tt> is set, then the string argument is copied;  + otherwise the new <tt>string_list_entry</tt> refers to the input   string.   </p>   </dd>   <dt class="hdlist1">  -<code>string_list_append_nodup</code>  +<tt>string_list_append_nodup</tt>   </dt>   <dd>   <p>   Append a new string to the end of the string_list. The new  - <code>string_list_entry</code> always refers to the input string, even if  - <code>strdup_string</code> is set. This function can be used to hand  - ownership of a malloc()ed string to a <code>string_list</code> that has  - <code>strdup_string</code> set.  + <tt>string_list_entry</tt> always refers to the input string, even if  + <tt>strdup_string</tt> is set. This function can be used to hand  + ownership of a malloc()ed string to a <tt>string_list</tt> that has  + <tt>strdup_string</tt> set.   </p>   </dd>   <dt class="hdlist1">  -<code>sort_string_list</code>  +<tt>sort_string_list</tt>   </dt>   <dd>   <p>  - Sort the list’s entries by string value in <code>strcmp()</code> order.  + Sort the list’s entries by string value in <tt>strcmp()</tt> order.   </p>   </dd>   <dt class="hdlist1">  -<code>unsorted_string_list_has_string</code>  +<tt>unsorted_string_list_has_string</tt>   </dt>   <dd>   <p>  - It’s like <code>string_list_has_string()</code> but for unsorted lists.  + It’s like <tt>string_list_has_string()</tt> but for unsorted lists.   </p>   </dd>   <dt class="hdlist1">  -<code>unsorted_string_list_lookup</code>  +<tt>unsorted_string_list_lookup</tt>   </dt>   <dd>   <p>  - It’s like <code>string_list_lookup()</code> but for unsorted lists.  + It’s like <tt>string_list_lookup()</tt> but for unsorted lists.   </p>   <div class="paragraph"><p>The above two functions need to look through all items, as opposed to their   counterpart for sorted lists, which performs a binary search.</p></div>   </dd>   <dt class="hdlist1">  -<code>unsorted_string_list_delete_item</code>  +<tt>unsorted_string_list_delete_item</tt>   </dt>   <dd>   <p>  - Remove an item from a string_list. The <code>string</code> pointer of the items  - will be freed in case the <code>strdup_strings</code> member of the string_list  - is set. The third parameter controls if the <code>util</code> pointer of the  + Remove an item from a string_list. The <tt>string</tt> pointer of the items  + will be freed in case the <tt>strdup_strings</tt> member of the string_list  + is set. The third parameter controls if the <tt>util</tt> pointer of the   items should be freed or not.   </p>   </dd>   <dt class="hdlist1">  -<code>string_list_split</code>  +<tt>string_list_split</tt>   </dt>   <dt class="hdlist1">  -<code>string_list_split_in_place</code>  +<tt>string_list_split_in_place</tt>   </dt>   <dd>   <p>   Split a string into substrings on a delimiter character and  - append the substrings to a <code>string_list</code>. If <code>maxsplit</code> is  - non-negative, then split at most <code>maxsplit</code> times. Return the  + append the substrings to a <tt>string_list</tt>. If <tt>maxsplit</tt> is  + non-negative, then split at most <tt>maxsplit</tt> times. Return the   number of substrings appended to the list.   </p>  -<div class="paragraph"><p><code>string_list_split</code> requires a <code>string_list</code> that has <code>strdup_strings</code>  +<div class="paragraph"><p><tt>string_list_split</tt> requires a <tt>string_list</tt> that has <tt>strdup_strings</tt>   set to true; it leaves the input string untouched and makes copies of   the substrings in newly-allocated memory.  -<code>string_list_split_in_place</code> requires a <code>string_list</code> that has  -<code>strdup_strings</code> set to false; it splits the input string in place,  +<tt>string_list_split_in_place</tt> requires a <tt>string_list</tt> that has  +<tt>strdup_strings</tt> set to false; it splits the input string in place,   overwriting the delimiter characters with NULs and creating new   string_list_items that point into the original string (the original  -string must therefore not be modified or freed while the <code>string_list</code>  +string must therefore not be modified or freed while the <tt>string_list</tt>   is in use).</p></div>   </dd>   </dl></div>  @@ -1032,16 +1036,16 @@  <div class="ulist"><ul>   <li>   <p>  -<code>struct string_list_item</code>  +<tt>struct string_list_item</tt>   </p>   </li>   </ul></div>  -<div class="paragraph"><p>Represents an item of the list. The <code>string</code> member is a pointer to the  -string, and you may use the <code>util</code> member for any purpose, if you want.</p></div>  +<div class="paragraph"><p>Represents an item of the list. The <tt>string</tt> member is a pointer to the  +string, and you may use the <tt>util</tt> member for any purpose, if you want.</p></div>   <div class="ulist"><ul>   <li>   <p>  -<code>struct string_list</code>  +<tt>struct string_list</tt>   </p>   </li>   </ul></div>  @@ -1049,23 +1053,23 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -The array of items are available via the <code>items</code> member.  +The array of items are available via the <tt>items</tt> member.   </p>   </li>   <li>   <p>  -The <code>nr</code> member contains the number of items stored in the list.  +The <tt>nr</tt> member contains the number of items stored in the list.   </p>   </li>   <li>   <p>  -The <code>alloc</code> member is used to avoid reallocating at every insertion.  +The <tt>alloc</tt> member is used to avoid reallocating at every insertion.   You should not tamper with it.   </p>   </li>   <li>   <p>  -Setting the <code>strdup_strings</code> member to 1 will strdup() the strings  +Setting the <tt>strdup_strings</tt> member to 1 will strdup() the strings   before adding them, see above.   </p>   </li>  diff --git a/technical/api-tree-walking.html b/technical/api-tree-walking.html index 5760a3b..0e9d56d 100644 --- a/technical/api-tree-walking.html +++ b/technical/api-tree-walking.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>tree walking API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -744,7 +748,7 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>struct name_entry</code>  +<tt>struct name_entry</tt>   </dt>   <dd>   <p>  @@ -753,7 +757,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>struct tree_desc</code>  +<tt>struct tree_desc</tt>   </dt>   <dd>   <p>  @@ -763,24 +767,24 @@  <div class="ulist"><ul>   <li>   <p>  -<code>buffer</code> is a pointer into the memory representation of the tree. It always  +<tt>buffer</tt> is a pointer into the memory representation of the tree. It always   points at the current entry being visited.   </p>   </li>   <li>   <p>  -<code>size</code> counts the number of bytes left in the <code>buffer</code>.  +<tt>size</tt> counts the number of bytes left in the <tt>buffer</tt>.   </p>   </li>   <li>   <p>  -<code>entry</code> points to the current entry being visited.  +<tt>entry</tt> points to the current entry being visited.   </p>   </li>   </ul></div>   </dd>   <dt class="hdlist1">  -<code>struct traverse_info</code>  +<tt>struct traverse_info</tt>   </dt>   <dd>   <p>  @@ -789,40 +793,40 @@  <div class="ulist"><ul>   <li>   <p>  -<code>prev</code> points to the traverse_info which was used to descend into the  -current tree. If this is the top-level tree <code>prev</code> will point to  +<tt>prev</tt> points to the traverse_info which was used to descend into the  +current tree. If this is the top-level tree <tt>prev</tt> will point to   a dummy traverse_info.   </p>   </li>   <li>   <p>  -<code>name</code> is the entry for the current tree (if the tree is a subtree).  +<tt>name</tt> is the entry for the current tree (if the tree is a subtree).   </p>   </li>   <li>   <p>  -<code>pathlen</code> is the length of the full path for the current tree.  +<tt>pathlen</tt> is the length of the full path for the current tree.   </p>   </li>   <li>   <p>  -<code>conflicts</code> can be used by callbacks to maintain directory-file conflicts.  +<tt>conflicts</tt> can be used by callbacks to maintain directory-file conflicts.   </p>   </li>   <li>   <p>  -<code>fn</code> is a callback called for each entry in the tree. See Traversing for more  +<tt>fn</tt> is a callback called for each entry in the tree. See Traversing for more   information.   </p>   </li>   <li>   <p>  -<code>data</code> can be anything the <code>fn</code> callback would want to use.  +<tt>data</tt> can be anything the <tt>fn</tt> callback would want to use.   </p>   </li>   <li>   <p>  -<code>show_all_errors</code> tells whether to stop at the first error or not.  +<tt>show_all_errors</tt> tells whether to stop at the first error or not.   </p>   </li>   </ul></div>  @@ -835,33 +839,33 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>init_tree_desc</code>  +<tt>init_tree_desc</tt>   </dt>   <dd>   <p>  - Initialize a <code>tree_desc</code> and decode its first entry. The buffer and  + Initialize a <tt>tree_desc</tt> and decode its first entry. The buffer and   size parameters are assumed to be the same as the buffer and size  - members of <code>struct tree</code>.  + members of <tt>struct tree</tt>.   </p>   </dd>   <dt class="hdlist1">  -<code>fill_tree_descriptor</code>  +<tt>fill_tree_descriptor</tt>   </dt>   <dd>   <p>  - Initialize a <code>tree_desc</code> and decode its first entry given the sha1 of  - a tree. Returns the <code>buffer</code> member if the sha1 is a valid tree  + Initialize a <tt>tree_desc</tt> and decode its first entry given the sha1 of  + a tree. Returns the <tt>buffer</tt> member if the sha1 is a valid tree   identifier and NULL otherwise.   </p>   </dd>   <dt class="hdlist1">  -<code>setup_traverse_info</code>  +<tt>setup_traverse_info</tt>   </dt>   <dd>   <p>  - Initialize a <code>traverse_info</code> given the pathname of the tree to start  - traversing from. The <code>base</code> argument is assumed to be the <code>path</code>  - member of the <code>name_entry</code> being recursed into unless the tree is a  + Initialize a <tt>traverse_info</tt> given the pathname of the tree to start  + traversing from. The <tt>base</tt> argument is assumed to be the <tt>path</tt>  + member of the <tt>name_entry</tt> being recursed into unless the tree is a   top-level tree in which case the empty string ("") is used.   </p>   </dd>  @@ -873,7 +877,7 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>tree_entry</code>  +<tt>tree_entry</tt>   </dt>   <dd>   <p>  @@ -883,7 +887,7 @@  </p>   </dd>   <dt class="hdlist1">  -<code>tree_entry_len</code>  +<tt>tree_entry_len</tt>   </dt>   <dd>   <p>  @@ -893,27 +897,27 @@  </p>   </dd>   <dt class="hdlist1">  -<code>update_tree_entry</code>  +<tt>update_tree_entry</tt>   </dt>   <dd>   <p>   Walk to the next entry in a tree. This is commonly used in conjunction  - with <code>tree_entry_extract</code> to inspect the current entry.  + with <tt>tree_entry_extract</tt> to inspect the current entry.   </p>   </dd>   <dt class="hdlist1">  -<code>tree_entry_extract</code>  +<tt>tree_entry_extract</tt>   </dt>   <dd>   <p>   Decode the entry currently being visited (the one pointed to by  - <code>tree_desc's</code> <code>entry</code> member) and return the sha1 of the entry. The  - <code>pathp</code> and <code>modep</code> arguments are set to the entry’s pathname and mode  + <tt>tree_desc's</tt> <tt>entry</tt> member) and return the sha1 of the entry. The  + <tt>pathp</tt> and <tt>modep</tt> arguments are set to the entry’s pathname and mode   respectively.   </p>   </dd>   <dt class="hdlist1">  -<code>get_tree_entry</code>  +<tt>get_tree_entry</tt>   </dt>   <dd>   <p>  @@ -931,16 +935,16 @@  <div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">  -<code>traverse_trees</code>  +<tt>traverse_trees</tt>   </dt>   <dd>   <p>  - Traverse <code>n</code> number of trees in parallel. The <code>fn</code> callback member of  - <code>traverse_info</code> is called once for each tree entry.  + Traverse <tt>n</tt> number of trees in parallel. The <tt>fn</tt> callback member of  + <tt>traverse_info</tt> is called once for each tree entry.   </p>   </dd>   <dt class="hdlist1">  -<code>traverse_callback_t</code>  +<tt>traverse_callback_t</tt>   </dt>   <dd>   <p>  @@ -949,27 +953,27 @@  <div class="ulist"><ul>   <li>   <p>  -<code>n</code> counts the number of trees being traversed.  +<tt>n</tt> counts the number of trees being traversed.   </p>   </li>   <li>   <p>  -<code>mask</code> has its nth bit set if something exists in the nth entry.  +<tt>mask</tt> has its nth bit set if something exists in the nth entry.   </p>   </li>   <li>   <p>  -<code>dirmask</code> has its nth bit set if the nth tree’s entry is a directory.  +<tt>dirmask</tt> has its nth bit set if the nth tree’s entry is a directory.   </p>   </li>   <li>   <p>  -<code>entry</code> is an array of size <code>n</code> where the nth entry is from the nth tree.  +<tt>entry</tt> is an array of size <tt>n</tt> where the nth entry is from the nth tree.   </p>   </li>   <li>   <p>  -<code>info</code> maintains the state of the traversal.  +<tt>info</tt> maintains the state of the traversal.   </p>   </li>   </ul></div>  @@ -979,7 +983,7 @@  same in the next callback invocation.</p></div>   </dd>   <dt class="hdlist1">  -<code>make_traverse_path</code>  +<tt>make_traverse_path</tt>   </dt>   <dd>   <p>  @@ -990,11 +994,11 @@  </p>   </dd>   <dt class="hdlist1">  -<code>traverse_path_len</code>  +<tt>traverse_path_len</tt>   </dt>   <dd>   <p>  - Calculate the length of a pathname returned by <code>make_traverse_path</code>.  + Calculate the length of a pathname returned by <tt>make_traverse_path</tt>.   This utilizes the memory structure of a tree entry to avoid the   overhead of using a generic strlen().   </p>  diff --git a/technical/api-xdiff-interface.html b/technical/api-xdiff-interface.html index 61d0497..8be169b 100644 --- a/technical/api-xdiff-interface.html +++ b/technical/api-xdiff-interface.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>xdiff interface API</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/index-format.html b/technical/index-format.html index 71c5672..58ce2da 100644 --- a/technical/index-format.html +++ b/technical/index-format.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Git index format</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -739,8 +743,8 @@  <div class="sectionbody">   <div class="literalblock">   <div class="content">  -<pre><code>All binary numbers are in network byte order. Version 2 is described  -here unless stated otherwise.</code></pre>  +<pre><tt>All binary numbers are in network byte order. Version 2 is described  +here unless stated otherwise.</tt></pre>   </div></div>   <div class="ulist"><ul>   <li>  @@ -749,17 +753,17 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte signature:  - The signature is { 'D', 'I', 'R', 'C' } (stands for "dircache")</code></pre>  +<pre><tt>4-byte signature:  + The signature is { 'D', 'I', 'R', 'C' } (stands for "dircache")</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte version number:  - The current supported versions are 2, 3 and 4.</code></pre>  +<pre><tt>4-byte version number:  + The current supported versions are 2, 3 and 4.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit number of index entries.</code></pre>  +<pre><tt>32-bit number of index entries.</tt></pre>   </div></div>   </li>   <li>  @@ -773,25 +777,25 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>Extensions are identified by signature. Optional extensions can  -be ignored if Git does not understand them.</code></pre>  +<pre><tt>Extensions are identified by signature. Optional extensions can  +be ignored if Git does not understand them.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>Git currently supports cached tree and resolve undo extensions.</code></pre>  +<pre><tt>Git currently supports cached tree and resolve undo extensions.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte extension signature. If the first byte is 'A'..'Z' the  -extension is optional and can be ignored.</code></pre>  +<pre><tt>4-byte extension signature. If the first byte is 'A'..'Z' the  +extension is optional and can be ignored.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit size of the extension</code></pre>  +<pre><tt>32-bit size of the extension</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>Extension data</code></pre>  +<pre><tt>Extension data</tt></pre>   </div></div>   </li>   <li>  @@ -808,137 +812,137 @@  <div class="sectionbody">   <div class="literalblock">   <div class="content">  -<pre><code>Index entries are sorted in ascending order on the name field,  +<pre><tt>Index entries are sorted in ascending order on the name field,   interpreted as a string of unsigned bytes (i.e. memcmp() order, no   localization, no special casing of directory separator '/'). Entries  -with the same name are sorted by their stage field.</code></pre>  +with the same name are sorted by their stage field.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit ctime seconds, the last time a file's metadata changed  - this is stat(2) data</code></pre>  +<pre><tt>32-bit ctime seconds, the last time a file's metadata changed  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit ctime nanosecond fractions  - this is stat(2) data</code></pre>  +<pre><tt>32-bit ctime nanosecond fractions  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit mtime seconds, the last time a file's data changed  - this is stat(2) data</code></pre>  +<pre><tt>32-bit mtime seconds, the last time a file's data changed  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit mtime nanosecond fractions  - this is stat(2) data</code></pre>  +<pre><tt>32-bit mtime nanosecond fractions  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit dev  - this is stat(2) data</code></pre>  +<pre><tt>32-bit dev  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit ino  - this is stat(2) data</code></pre>  +<pre><tt>32-bit ino  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit mode, split into (high to low bits)</code></pre>  +<pre><tt>32-bit mode, split into (high to low bits)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>4-bit object type  +<pre><tt>4-bit object type   valid values in binary are 1000 (regular file), 1010 (symbolic link)  - and 1110 (gitlink)</code></pre>  + and 1110 (gitlink)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>3-bit unused</code></pre>  +<pre><tt>3-bit unused</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>9-bit unix permission. Only 0755 and 0644 are valid for regular files.  -Symbolic links and gitlinks have value 0 in this field.</code></pre>  +<pre><tt>9-bit unix permission. Only 0755 and 0644 are valid for regular files.  +Symbolic links and gitlinks have value 0 in this field.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit uid  - this is stat(2) data</code></pre>  +<pre><tt>32-bit uid  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit gid  - this is stat(2) data</code></pre>  +<pre><tt>32-bit gid  + this is stat(2) data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>32-bit file size  - This is the on-disk size from stat(2), truncated to 32-bit.</code></pre>  +<pre><tt>32-bit file size  + This is the on-disk size from stat(2), truncated to 32-bit.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>160-bit SHA-1 for the represented object</code></pre>  +<pre><tt>160-bit SHA-1 for the represented object</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>A 16-bit 'flags' field split into (high to low bits)</code></pre>  +<pre><tt>A 16-bit 'flags' field split into (high to low bits)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-bit assume-valid flag</code></pre>  +<pre><tt>1-bit assume-valid flag</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-bit extended flag (must be zero in version 2)</code></pre>  +<pre><tt>1-bit extended flag (must be zero in version 2)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>2-bit stage (during merge)</code></pre>  +<pre><tt>2-bit stage (during merge)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>12-bit name length if the length is less than 0xFFF; otherwise 0xFFF  -is stored in this field.</code></pre>  +<pre><tt>12-bit name length if the length is less than 0xFFF; otherwise 0xFFF  +is stored in this field.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>(Version 3 or later) A 16-bit field, only applicable if the  -"extended flag" above is 1, split into (high to low bits).</code></pre>  +<pre><tt>(Version 3 or later) A 16-bit field, only applicable if the  +"extended flag" above is 1, split into (high to low bits).</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-bit reserved for future</code></pre>  +<pre><tt>1-bit reserved for future</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-bit skip-worktree flag (used by sparse checkout)</code></pre>  +<pre><tt>1-bit skip-worktree flag (used by sparse checkout)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-bit intent-to-add flag (used by "git add -N")</code></pre>  +<pre><tt>1-bit intent-to-add flag (used by "git add -N")</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>13-bit unused, must be zero</code></pre>  +<pre><tt>13-bit unused, must be zero</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>Entry path name (variable length) relative to top level directory  +<pre><tt>Entry path name (variable length) relative to top level directory   (without leading slash). '/' is used as path separator. The special   path components ".", ".." and ".git" (without quotes) are disallowed.  - Trailing slash is also disallowed.</code></pre>  + Trailing slash is also disallowed.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The exact encoding is undefined, but the '.' and '/' characters  +<pre><tt>The exact encoding is undefined, but the '.' and '/' characters   are encoded in 7-bit ASCII and the encoding cannot contain a NUL  -byte (iow, this is a UNIX pathname).</code></pre>  +byte (iow, this is a UNIX pathname).</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>(Version 4) In version 4, the entry path name is prefix-compressed  +<pre><tt>(Version 4) In version 4, the entry path name is prefix-compressed   relative to the path name for the previous entry (the very first   entry is encoded as if the path name for the previous entry is an   empty string). At the beginning of an entry, an integer N in the  @@ -946,17 +950,17 @@  for OFS_DELTA pack entries; see pack-format.txt) is stored, followed   by a NUL-terminated string S. Removing N bytes from the end of the   path name for the previous entry, and replacing it with the string S  - yields the path name for this entry.</code></pre>  + yields the path name for this entry.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>1-8 nul bytes as necessary to pad the entry to a multiple of eight bytes  -while keeping the name NUL-terminated.</code></pre>  +<pre><tt>1-8 nul bytes as necessary to pad the entry to a multiple of eight bytes  +while keeping the name NUL-terminated.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>(Version 4) In version 4, the padding after the pathname does not  -exist.</code></pre>  +<pre><tt>(Version 4) In version 4, the padding after the pathname does not  +exist.</tt></pre>   </div></div>   </div>   </div>  @@ -967,23 +971,23 @@  <h3 id="_cached_tree">Cached tree</h3>   <div class="literalblock">   <div class="content">  -<pre><code>Cached tree extension contains pre-computed hashes for trees that can  +<pre><tt>Cached tree extension contains pre-computed hashes for trees that can   be derived from the index. It helps speed up tree object generation  -from index for a new commit.</code></pre>  +from index for a new commit.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>When a path is updated in index, the path must be invalidated and  -removed from tree cache.</code></pre>  +<pre><tt>When a path is updated in index, the path must be invalidated and  +removed from tree cache.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The signature for this extension is { 'T', 'R', 'E', 'E' }.</code></pre>  +<pre><tt>The signature for this extension is { 'T', 'R', 'E', 'E' }.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>A series of entries fill the entire extension; each of which  -consists of:</code></pre>  +<pre><tt>A series of entries fill the entire extension; each of which  +consists of:</tt></pre>   </div></div>   <div class="ulist"><ul>   <li>  @@ -1020,18 +1024,18 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>An entry can be in an invalidated state and is represented by having  +<pre><tt>An entry can be in an invalidated state and is represented by having   a negative number in the entry_count field. In this case, there is no   object name and the next entry starts immediately after the newline.  -When writing an invalid entry, -1 should always be used as entry_count.</code></pre>  +When writing an invalid entry, -1 should always be used as entry_count.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The entries are written out in the top-down, depth-first order. The  +<pre><tt>The entries are written out in the top-down, depth-first order. The   first entry represents the root level of the repository, followed by the   first subtree---let's call this A---of the root level (with its name   relative to the root level), followed by the first subtree of A (with  -its name relative to A), ...</code></pre>  +its name relative to A), ...</tt></pre>   </div></div>   </li>   </ul></div>  @@ -1040,26 +1044,26 @@  <h3 id="_resolve_undo">Resolve undo</h3>   <div class="literalblock">   <div class="content">  -<pre><code>A conflict is represented in the index as a set of higher stage entries.  +<pre><tt>A conflict is represented in the index as a set of higher stage entries.   When a conflict is resolved (e.g. with "git add path"), these higher   stage entries will be removed and a stage-0 entry with proper resolution  -is added.</code></pre>  +is added.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>When these higher stage entries are removed, they are saved in the  +<pre><tt>When these higher stage entries are removed, they are saved in the   resolve undo extension, so that conflicts can be recreated (e.g. with   "git checkout -m"), in case users want to redo a conflict resolution  -from scratch.</code></pre>  +from scratch.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>The signature for this extension is { 'R', 'E', 'U', 'C' }.</code></pre>  +<pre><tt>The signature for this extension is { 'R', 'E', 'U', 'C' }.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>A series of entries fill the entire extension; each of which  -consists of:</code></pre>  +<pre><tt>A series of entries fill the entire extension; each of which  +consists of:</tt></pre>   </div></div>   <div class="ulist"><ul>   <li>  diff --git a/technical/pack-format.html b/technical/pack-format.html index 7f4c4d2..4b7719e 100644 --- a/technical/pack-format.html +++ b/technical/pack-format.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Git pack format</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -744,23 +748,23 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte signature:  - The signature is: {'P', 'A', 'C', 'K'}</code></pre>  +<pre><tt>4-byte signature:  + The signature is: {'P', 'A', 'C', 'K'}</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte version number (network byte order):  +<pre><tt>4-byte version number (network byte order):   Git currently accepts version number 2 or 3 but  - generates version 2 only.</code></pre>  + generates version 2 only.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte number of objects contained in the pack (network byte order)</code></pre>  +<pre><tt>4-byte number of objects contained in the pack (network byte order)</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>Observation: we cannot have more than 4G versions ;-) and  -more than 4G objects in a pack.</code></pre>  +<pre><tt>Observation: we cannot have more than 4G versions ;-) and  +more than 4G objects in a pack.</tt></pre>   </div></div>   </li>   <li>  @@ -770,23 +774,23 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>(undeltified representation)  +<pre><tt>(undeltified representation)   n-byte type and length (3-bit type, (n-1)*7+4-bit length)  -compressed data</code></pre>  +compressed data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>(deltified representation)  +<pre><tt>(deltified representation)   n-byte type and length (3-bit type, (n-1)*7+4-bit length)   20-byte base object name if OBJ_REF_DELTA or a negative relative   offset from the delta object's position in the pack if this   is an OBJ_OFS_DELTA object  -compressed delta data</code></pre>  +compressed delta data</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>Observation: length of each object is encoded in a variable  -length format and is not constrained to 32-bit or anything.</code></pre>  +<pre><tt>Observation: length of each object is encoded in a variable  +length format and is not constrained to 32-bit or anything.</tt></pre>   </div></div>   </li>   <li>  @@ -817,13 +821,13 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>4-byte network byte order integer, recording where the  +<pre><tt>4-byte network byte order integer, recording where the   object is stored in the packfile as the offset from the  -beginning.</code></pre>  +beginning.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>20-byte object name.</code></pre>  +<pre><tt>20-byte object name.</tt></pre>   </div></div>   </li>   <li>  @@ -832,19 +836,19 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>A copy of the 20-byte SHA-1 checksum at the end of  -corresponding packfile.</code></pre>  +<pre><tt>A copy of the 20-byte SHA-1 checksum at the end of  +corresponding packfile.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>20-byte SHA-1-checksum of all of the above.</code></pre>  +<pre><tt>20-byte SHA-1-checksum of all of the above.</tt></pre>   </div></div>   </li>   </ul></div>   <div class="paragraph"><p>Pack Idx file:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code> -- +--------------------------------+  +<pre><tt> -- +--------------------------------+   fanout | fanout[0] = 2 (for example) |-.   table +--------------------------------+ |   | fanout[1] | |  @@ -874,11 +878,11 @@  | +--------------------------------+   .-------.   |  -Pack file entry: <+</code></pre>  +Pack file entry: <+</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>packed object header:  +<pre><tt>packed object header:   1-byte size extension bit (MSB)   type (next 3 bit)   size0 (lower 4-bit)  @@ -898,16 +902,16 @@  offset from the type-byte of the header of the   ofs-delta entry (the size above is the size of   the delta data that follows).  - delta data, deflated.</code></pre>  + delta data, deflated.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>offset encoding:  +<pre><tt>offset encoding:   n bytes with MSB set in all but the last one.   The offset is then the number constructed by   concatenating the lower 7 bit of each byte, and   for n >= 2 adding 2^7 + 2^14 + ... + 2^(7*(n-1))  - to the result.</code></pre>  + to the result.</tt></pre>   </div></div>   </div>   </div>  @@ -916,7 +920,7 @@  <div class="sectionbody">   <div class="literalblock">   <div class="content">  -<pre><code>have some other reorganizations. They have the format:</code></pre>  +<pre><tt>have some other reorganizations. They have the format:</tt></pre>   </div></div>   <div class="ulist"><ul>   <li>  @@ -972,12 +976,12 @@  </p>   <div class="literalblock">   <div class="content">  -<pre><code>A copy of the 20-byte SHA-1 checksum at the end of  -corresponding packfile.</code></pre>  +<pre><tt>A copy of the 20-byte SHA-1 checksum at the end of  +corresponding packfile.</tt></pre>   </div></div>   <div class="literalblock">   <div class="content">  -<pre><code>20-byte SHA-1-checksum of all of the above.</code></pre>  +<pre><tt>20-byte SHA-1-checksum of all of the above.</tt></pre>   </div></div>   </li>   </ul></div>  diff --git a/technical/pack-protocol.html b/technical/pack-protocol.html index 52c90bd..f2e44c0 100644 --- a/technical/pack-protocol.html +++ b/technical/pack-protocol.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Packfile transfer protocols</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -774,17 +778,17 @@  hostname parameter, terminated by a NUL byte.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>0032git-upload-pack /project.git\0host=myserver.com\0</code></pre>  +<pre><tt>0032git-upload-pack /project.git\0host=myserver.com\0</tt></pre>   </div></div>   <div class="openblock">   <div class="content">   <div class="literalblock">   <div class="content">  -<pre><code>git-proto-request = request-command SP pathname NUL [ host-parameter NUL ]  +<pre><tt>git-proto-request = request-command SP pathname NUL [ host-parameter NUL ]   request-command = "git-upload-pack" / "git-receive-pack" /   "git-upload-archive" ; case sensitive   pathname = *( %x01-ff ) ; exclude NUL  -host-parameter = "host=" hostname [ ":" port ]</code></pre>  +host-parameter = "host=" hostname [ ":" port ]</tt></pre>   </div></div>   </div></div>   <div class="paragraph"><p>Only host-parameter is allowed in the git-proto-request. Clients  @@ -795,15 +799,15 @@  process on the server side over the Git protocol is this:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ echo -e -n \  +<pre><tt>$ echo -e -n \   "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" |  - nc -v example.com 9418</code></pre>  + nc -v example.com 9418</tt></pre>   </div></div>   <div class="paragraph"><p>If the server refuses the request for some reasons, it could abort   gracefully with an error message.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> error-line = PKT-LINE("ERR" SP explanation-text)</code></pre>  +<pre><tt> error-line = PKT-LINE("ERR" SP explanation-text)</tt></pre>   </div></div>   </div>   </div>  @@ -815,7 +819,7 @@  It is basically equivalent to running this:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ ssh git.example.com "git-upload-pack '/project.git'"</code></pre>  +<pre><tt>$ ssh git.example.com "git-upload-pack '/project.git'"</tt></pre>   </div></div>   <div class="paragraph"><p>For a server to support Git pushing and pulling for a given user over   SSH, that user needs to be able to execute one or both of those  @@ -828,28 +832,28 @@  an absolute path in the remote filesystem.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code> git clone ssh://user@example.com/project.git  +<pre><tt> git clone ssh://user@example.com/project.git   |   v  -ssh user@example.com "git-upload-pack '/project.git'"</code></pre>  +ssh user@example.com "git-upload-pack '/project.git'"</tt></pre>   </div></div>   <div class="paragraph"><p>In a "user@host:path" format URI, its relative to the user’s home   directory, because the Git client will run:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code> git clone user@example.com:project.git  +<pre><tt> git clone user@example.com:project.git   |   v  -ssh user@example.com "git-upload-pack 'project.git'"</code></pre>  +ssh user@example.com "git-upload-pack 'project.git'"</tt></pre>   </div></div>   <div class="paragraph"><p>The exception is if a <em>~</em> is used, in which case   we execute it without the leading <em>/</em>.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code> ssh://user@example.com/~alice/project.git,  +<pre><tt> ssh://user@example.com/~alice/project.git,   |   v  -ssh user@example.com "git-upload-pack '~alice/project.git'"</code></pre>  +ssh user@example.com "git-upload-pack '~alice/project.git'"</tt></pre>   </div></div>   <div class="paragraph"><p>A few things to remember here:</p></div>   <div class="ulist"><ul>  @@ -884,7 +888,7 @@  with the object name that each reference currently points to.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ echo -e -n "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" |  +<pre><tt>$ echo -e -n "0039git-upload-pack /schacon/gitbook.git\0host=example.com\0" |   nc -v example.com 9418   00887217a7c7e582c46cec22a130adf4b9d7d950fba0 HEAD\0multi_ack thin-pack   side-band side-band-64k ofs-delta shallow no-progress include-tag  @@ -893,7 +897,7 @@  003cb88d2441cac0977faf98efc80305012112238d9d refs/tags/v0.9   003c525128480b96c89e6418b1e40909bf6c5b2d580f refs/tags/v1.0   003fe92df48743b7bc7d26bcaabfddde0a1e20cae47c refs/tags/v1.0^{}  -0000</code></pre>  +0000</tt></pre>   </div></div>   <div class="paragraph"><p>Server SHOULD terminate each non-flush line using LF ("\n") terminator;   client MUST NOT complain if there is no terminator.</p></div>  @@ -909,7 +913,8 @@  MUST peel the ref if it’s an annotated tag.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> advertised-refs = (no-refs / list-of-refs)  +<pre><tt> advertised-refs = (no-refs / list-of-refs)  + *shallow   flush-pkt     no-refs = PKT-LINE(zero-id SP "capabilities^{}"  @@ -923,9 +928,11 @@  other-tip = obj-id SP refname LF   other-peeled = obj-id SP refname "^{}" LF    + shallow = PKT-LINE("shallow" SP obj-id)  +   capability-list = capability *(SP capability)   capability = 1*(LC_ALPHA / DIGIT / "-" / "_")  - LC_ALPHA = %x61-7A</code></pre>  + LC_ALPHA = %x61-7A</tt></pre>   </div></div>   <div class="paragraph"><p>Server and client MUST use lowercase for obj-id, both MUST treat obj-id   as case-insensitive.</p></div>  @@ -949,7 +956,7 @@  out of what the server said it could do with the first <em>want</em> line.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> upload-request = want-list  +<pre><tt> upload-request = want-list   *shallow-line   *1depth-request   flush-pkt  @@ -964,7 +971,7 @@  first-want = PKT-LINE("want" SP obj-id SP capability-list LF)   additional-want = PKT-LINE("want" SP obj-id LF)    - depth = 1*DIGIT</code></pre>  + depth = 1*DIGIT</tt></pre>   </div></div>   <div class="paragraph"><p>Clients MUST send all the obj-ids it wants from the reference   discovery phase as <em>want</em> lines. Clients MUST send at least one  @@ -992,13 +999,13 @@  a positive depth, this step is skipped.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> shallow-update = *shallow-line  +<pre><tt> shallow-update = *shallow-line   *unshallow-line   flush-pkt     shallow-line = PKT-LINE("shallow" SP obj-id)    - unshallow-line = PKT-LINE("unshallow" SP obj-id)</code></pre>  + unshallow-line = PKT-LINE("unshallow" SP obj-id)</tt></pre>   </div></div>   <div class="paragraph"><p>If the client has requested a positive depth, the server will compute   the set of commits which are no deeper than the desired depth. The set  @@ -1017,12 +1024,12 @@  so that there is always a block of 32 "in-flight on the wire" at a time.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> upload-haves = have-list  +<pre><tt> upload-haves = have-list   compute-end     have-list = *have-line   have-line = PKT-LINE("have" SP obj-id LF)  - compute-end = flush-pkt / PKT-LINE("done")</code></pre>  + compute-end = flush-pkt / PKT-LINE("done")</tt></pre>   </div></div>   <div class="paragraph"><p>If the server reads <em>have</em> lines, it then will respond by ACKing any   of the obj-ids the client said it had that the server also has. The  @@ -1099,16 +1106,16 @@  <div class="paragraph"><p>Then the server will start sending its packfile data.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> server-response = *ack_multi ack / nak  +<pre><tt> server-response = *ack_multi ack / nak   ack_multi = PKT-LINE("ACK" SP obj-id ack_status LF)   ack_status = "continue" / "common" / "ready"   ack = PKT-LINE("ACK SP obj-id LF)  - nak = PKT-LINE("NAK" LF)</code></pre>  + nak = PKT-LINE("NAK" LF)</tt></pre>   </div></div>   <div class="paragraph"><p>A simple clone may look like this (with no <em>have</em> lines):</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \  +<pre><tt> C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \   side-band-64k ofs-delta\n   C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n   C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n  @@ -1118,12 +1125,12 @@  C: 0009done\n     S: 0008NAK\n  - S: [PACKFILE]</code></pre>  + S: [PACKFILE]</tt></pre>   </div></div>   <div class="paragraph"><p>An incremental update (fetch) response might look like this:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \  +<pre><tt> C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \   side-band-64k ofs-delta\n   C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n   C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n  @@ -1140,7 +1147,7 @@  C: 0009done\n     S: 0031ACK 74730d410fcb6603ace96f1dc55ea6196122532d\n  - S: [PACKFILE]</code></pre>  + S: [PACKFILE]</tt></pre>   </div></div>   </div>   </div>  @@ -1211,7 +1218,9 @@  references.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> update-request = command-list [pack-file]  +<pre><tt> update-request = *shallow command-list [pack-file]  +  + shallow = PKT-LINE("shallow" SP obj-id)     command-list = PKT-LINE(command NUL capability-list LF)   *PKT-LINE(command LF)  @@ -1225,7 +1234,7 @@  old-id = obj-id   new-id = obj-id    - pack-file = "PACK" 28*(OCTET)</code></pre>  + pack-file = "PACK" 28*(OCTET)</tt></pre>   </div></div>   <div class="paragraph"><p>If the receiving end does not support delete-refs, the sending end MUST   NOT ask for delete command.</p></div>  @@ -1254,7 +1263,7 @@  update was successful, or <em>ng [refname] [error]</em> if the update was not.</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> report-status = unpack-status  +<pre><tt> report-status = unpack-status   1*(command-status)   flush-pkt    @@ -1265,7 +1274,7 @@  command-ok = PKT-LINE("ok" SP refname LF)   command-fail = PKT-LINE("ng" SP refname SP error-msg LF)    - error-msg = 1*(OCTECT) ; where not "ok"</code></pre>  + error-msg = 1*(OCTECT) ; where not "ok"</tt></pre>   </div></div>   <div class="paragraph"><p>Updates can be unsuccessful for a number of reasons. The reference can have   changed since the reference discovery phase was originally sent, meaning  @@ -1276,7 +1285,7 @@  <div class="paragraph"><p>An example client/server communication might look like this:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> S: 007c74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/local\0report-status delete-refs ofs-delta\n  +<pre><tt> S: 007c74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/local\0report-status delete-refs ofs-delta\n   S: 003e7d1665144a3a975c05f1f43902ddaf084e784dbe refs/heads/debug\n   S: 003f74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/master\n   S: 003f74730d410fcb6603ace96f1dc55ea6196122532d refs/heads/team\n  @@ -1289,7 +1298,7 @@    S: 000eunpack ok\n   S: 0018ok refs/heads/debug\n  - S: 002ang refs/heads/master non-fast-forward\n</code></pre>  + S: 002ang refs/heads/master non-fast-forward\n</tt></pre>   </div></div>   </div>   </div>  @@ -1297,7 +1306,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2013-08-20 08:40:27 PDT  +Last updated 2014-01-17 14:43:28 PST   </div>   </div>   </body>  diff --git a/technical/pack-protocol.txt b/technical/pack-protocol.txt index b898e97..c73b62f 100644 --- a/technical/pack-protocol.txt +++ b/technical/pack-protocol.txt 
@@ -161,6 +161,7 @@    ----  advertised-refs = (no-refs / list-of-refs) + *shallow  flush-pkt    no-refs = PKT-LINE(zero-id SP "capabilities^{}" @@ -174,6 +175,8 @@  other-tip = obj-id SP refname LF  other-peeled = obj-id SP refname "^{}" LF   + shallow = PKT-LINE("shallow" SP obj-id) +  capability-list = capability *(SP capability)  capability = 1*(LC_ALPHA / DIGIT / "-" / "_")  LC_ALPHA = %x61-7A @@ -461,7 +464,9 @@  references.    ---- - update-request = command-list [pack-file] + update-request = *shallow command-list [pack-file] + + shallow = PKT-LINE("shallow" SP obj-id)    command-list = PKT-LINE(command NUL capability-list LF)  *PKT-LINE(command LF) diff --git a/technical/protocol-capabilities.html b/technical/protocol-capabilities.html index 00f7ede..75aaf3c 100644 --- a/technical/protocol-capabilities.html +++ b/technical/protocol-capabilities.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Git Protocol Capabilities</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -779,12 +783,12 @@  doesn’t, as in the following diagram:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code> +---- u ---------------------- x  +<pre><tt> +---- u ---------------------- x   / +----- y   / /   a -- b -- c -- d -- E -- F   \  - +--- Q -- R -- S</code></pre>  + +--- Q -- R -- S</tt></pre>   </div></div>   <div class="paragraph"><p>If the client wants x,y and starts out by saying have F,S, the server   doesn’t know what F,S is. Eventually the client says "have d" and  @@ -837,9 +841,9 @@  <div class="paragraph"><p>The stream code can be one of:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>1 - pack data  +<pre><tt>1 - pack data   2 - progress messages  -3 - fatal error message just before stream aborts</code></pre>  +3 - fatal error message just before stream aborts</tt></pre>   </div></div>   <div class="paragraph"><p>The "side-band-64k" capability came about as a way for newer clients   that can handle much larger packets to request packets that are  @@ -865,11 +869,11 @@  <div class="sect1">   <h2 id="_agent">agent</h2>   <div class="sectionbody">  -<div class="paragraph"><p>The server may optionally send a capability of the form <code>agent=X</code> to  -notify the client that the server is running version <code>X</code>. The client may  -optionally return its own agent string by responding with an <code>agent=Y</code>  +<div class="paragraph"><p>The server may optionally send a capability of the form <tt>agent=X</tt> to  +notify the client that the server is running version <tt>X</tt>. The client may  +optionally return its own agent string by responding with an <tt>agent=Y</tt>   capability (but it MUST NOT do so if the server did not mention the  -agent capability). The <code>X</code> and <code>Y</code> strings may contain any printable  +agent capability). The <tt>X</tt> and <tt>Y</tt> strings may contain any printable   ASCII characters except space (i.e., the byte range 32 < x < 127), and   are typically of the form "package/version" (e.g., "git/1.8.3.1"). The   agent strings are purely informative for statistics and debugging  @@ -949,7 +953,7 @@  be shown when processing the received pack. A send-pack client should   respond with the <em>quiet</em> capability to suppress server-side progress   reporting if the local progress reporting is also being suppressed  -(e.g., via <code>push -q</code>, or if stderr does not go to a tty).</p></div>  +(e.g., via <tt>push -q</tt>, or if stderr does not go to a tty).</p></div>   </div>   </div>   <div class="sect1">  diff --git a/technical/protocol-common.html b/technical/protocol-common.html index 9afa8d3..25a9bf3 100644 --- a/technical/protocol-common.html +++ b/technical/protocol-common.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Documentation Common to Pack and Http Protocols</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -741,17 +745,17 @@  except the following replacement core rules are used:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> HEXDIG = DIGIT / "a" / "b" / "c" / "d" / "e" / "f"</code></pre>  +<pre><tt> HEXDIG = DIGIT / "a" / "b" / "c" / "d" / "e" / "f"</tt></pre>   </div></div>   <div class="paragraph"><p>We also define the following common rules:</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> NUL = %x00  +<pre><tt> NUL = %x00   zero-id = 40*"0"   obj-id = 40*(HEXDIGIT)     refname = "HEAD"  - refname /= "refs/" <see discussion below></code></pre>  + refname /= "refs/" <see discussion below></tt></pre>   </div></div>   <div class="paragraph"><p>A refname is a hierarchical octet string beginning with "refs/" and   not violating the <em>git-check-ref-format</em> command’s validation rules.  @@ -759,49 +763,49 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -They can include slash <code>/</code> for hierarchical (directory)  +They can include slash <tt>/</tt> for hierarchical (directory)   grouping, but no slash-separated component can begin with a  - dot <code>.</code>.  + dot <tt>.</tt>.   </p>   </li>   <li>   <p>  -They must contain at least one <code>/</code>. This enforces the presence of a  - category like <code>heads/</code>, <code>tags/</code> etc. but the actual names are not  +They must contain at least one <tt>/</tt>. This enforces the presence of a  + category like <tt>heads/</tt>, <tt>tags/</tt> etc. but the actual names are not   restricted.   </p>   </li>   <li>   <p>  -They cannot have two consecutive dots <code>..</code> anywhere.  +They cannot have two consecutive dots <tt>..</tt> anywhere.   </p>   </li>   <li>   <p>   They cannot have ASCII control characters (i.e. bytes whose  - values are lower than \040, or \177 <code>DEL</code>), space, tilde <code>~</code>,  - caret <code>^</code>, colon <code>:</code>, question-mark <code>?</code>, asterisk <code>*</code>,  - or open bracket <code>[</code> anywhere.  + values are lower than \040, or \177 <tt>DEL</tt>), space, tilde <tt>~</tt>,  + caret <tt>^</tt>, colon <tt>:</tt>, question-mark <tt>?</tt>, asterisk <tt>*</tt>,  + or open bracket <tt>[</tt> anywhere.   </p>   </li>   <li>   <p>  -They cannot end with a slash <code>/</code> nor a dot <code>.</code>.  +They cannot end with a slash <tt>/</tt> nor a dot <tt>.</tt>.   </p>   </li>   <li>   <p>  -They cannot end with the sequence <code>.lock</code>.  +They cannot end with the sequence <tt>.lock</tt>.   </p>   </li>   <li>   <p>  -They cannot contain a sequence <code>@{</code>.  +They cannot contain a sequence <tt>@{</tt>.   </p>   </li>   <li>   <p>  -They cannot contain a <code>\\</code>.  +They cannot contain a <tt>\\</tt>.   </p>   </li>   </ol></div>  @@ -828,23 +832,23 @@  pkt-line ("0004").</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> pkt-line = data-pkt / flush-pkt  +<pre><tt> pkt-line = data-pkt / flush-pkt     data-pkt = pkt-len pkt-payload   pkt-len = 4*(HEXDIG)   pkt-payload = (pkt-len - 4)*(OCTET)    - flush-pkt = "0000"</code></pre>  + flush-pkt = "0000"</tt></pre>   </div></div>   <div class="paragraph"><p>Examples (as C-style strings):</p></div>   <div class="listingblock">   <div class="content">  -<pre><code> pkt-line actual value  +<pre><tt> pkt-line actual value   ---------------------------------   "0006a\n" "a\n"   "0005a" "a"   "000bfoobar\n" "foobar\n"  - "0004" ""</code></pre>  + "0004" ""</tt></pre>   </div></div>   </div>   </div>  diff --git a/technical/racy-git.html b/technical/racy-git.html index d8a8d16..2d26147 100644 --- a/technical/racy-git.html +++ b/technical/racy-git.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Use of index and Racy Git problem</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -745,32 +749,32 @@  often does not, match the files in the working tree.</p></div>   <div class="paragraph"><p>There are cases Git needs to examine the differences between the   virtual working tree state in the index and the files in the  -working tree. The most obvious case is when the user asks <code>git  -diff</code> (or its low level implementation, <code>git diff-files</code>) or  -<code>git-ls-files --modified</code>. In addition, Git internally checks  +working tree. The most obvious case is when the user asks <tt>git  +diff</tt> (or its low level implementation, <tt>git diff-files</tt>) or  +<tt>git-ls-files --modified</tt>. In addition, Git internally checks   if the files in the working tree are different from what are   recorded in the index to avoid stomping on local changes in them   during patch application, switching branches, and merging.</p></div>   <div class="paragraph"><p>In order to speed up this comparison between the files in the   working tree and the index entries, the index entries record the  -information obtained from the filesystem via <code>lstat(2)</code> system  +information obtained from the filesystem via <tt>lstat(2)</tt> system   call when they were last updated. When checking if they differ,  -Git first runs <code>lstat(2)</code> on the files and compares the result  +Git first runs <tt>lstat(2)</tt> on the files and compares the result   with this information (this is what was originally done by the  -<code>ce_match_stat()</code> function, but the current code does it in  -<code>ce_match_stat_basic()</code> function). If some of these "cached  +<tt>ce_match_stat()</tt> function, but the current code does it in  +<tt>ce_match_stat_basic()</tt> function). If some of these "cached   stat information" fields do not match, Git can tell that the   files are modified without even looking at their contents.</p></div>  -<div class="paragraph"><p>Note: not all members in <code>struct stat</code> obtained via <code>lstat(2)</code>  -are used for this comparison. For example, <code>st_atime</code> obviously  +<div class="paragraph"><p>Note: not all members in <tt>struct stat</tt> obtained via <tt>lstat(2)</tt>  +are used for this comparison. For example, <tt>st_atime</tt> obviously   is not useful. Currently, Git compares the file type (regular   files vs symbolic links) and executable bits (only for regular  -files) from <code>st_mode</code> member, <code>st_mtime</code> and <code>st_ctime</code>  -timestamps, <code>st_uid</code>, <code>st_gid</code>, <code>st_ino</code>, and <code>st_size</code> members.  -With a <code>USE_STDEV</code> compile-time option, <code>st_dev</code> is also  +files) from <tt>st_mode</tt> member, <tt>st_mtime</tt> and <tt>st_ctime</tt>  +timestamps, <tt>st_uid</tt>, <tt>st_gid</tt>, <tt>st_ino</tt>, and <tt>st_size</tt> members.  +With a <tt>USE_STDEV</tt> compile-time option, <tt>st_dev</tt> is also   compared, but this is not enabled by default because this member  -is not stable on network filesystems. With <code>USE_NSEC</code>  -compile-time option, <code>st_mtim.tv_nsec</code> and <code>st_ctim.tv_nsec</code>  +is not stable on network filesystems. With <tt>USE_NSEC</tt>  +compile-time option, <tt>st_mtim.tv_nsec</tt> and <tt>st_ctim.tv_nsec</tt>   members are also compared, but this is not enabled by default   because in-core timestamps can have finer granularity than   on-disk timestamps, resulting in meaningless changes when an  @@ -787,17 +791,17 @@  cached stat information. Consider this sequence:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>: modify 'foo'  +<pre><tt>: modify 'foo'   $ git update-index 'foo'  -: modify 'foo' again, in-place, without changing its size</code></pre>  +: modify 'foo' again, in-place, without changing its size</tt></pre>   </div></div>  -<div class="paragraph"><p>The first <code>update-index</code> computes the object name of the  -contents of file <code>foo</code> and updates the index entry for <code>foo</code>  -along with the <code>struct stat</code> information. If the modification  -that follows it happens very fast so that the file’s <code>st_mtime</code>  +<div class="paragraph"><p>The first <tt>update-index</tt> computes the object name of the  +contents of file <tt>foo</tt> and updates the index entry for <tt>foo</tt>  +along with the <tt>struct stat</tt> information. If the modification  +that follows it happens very fast so that the file’s <tt>st_mtime</tt>   timestamp does not change, after this sequence, the cached stat   information the index entry records still exactly match what you  -would see in the filesystem, even though the file <code>foo</code> is now  +would see in the filesystem, even though the file <tt>foo</tt> is now   different.   This way, Git can incorrectly think files in the working tree   are unmodified even though they actually are. This is called  @@ -809,9 +813,9 @@  <li>   <p>   When the cached stat information says the file has not been  - modified, and the <code>st_mtime</code> is the same as (or newer than)  - the timestamp of the index file itself (which is the time <code>git  - update-index foo</code> finished running in the above example), it  + modified, and the <tt>st_mtime</tt> is the same as (or newer than)  + the timestamp of the index file itself (which is the time <tt>git  + update-index foo</tt> finished running in the above example), it   also compares the contents with the object registered in the   index entry to make sure they match.   </p>  @@ -819,79 +823,79 @@  <li>   <p>   When the index file is updated that contains racily clean  - entries, cached <code>st_size</code> information is truncated to zero  + entries, cached <tt>st_size</tt> information is truncated to zero   before writing a new version of the index file.   </p>   </li>   </ol></div>   <div class="paragraph"><p>Because the index file itself is written after collecting all  -the stat information from updated paths, <code>st_mtime</code> timestamp of  +the stat information from updated paths, <tt>st_mtime</tt> timestamp of   it is usually the same as or newer than any of the paths the   index contains. And no matter how quick the modification that  -follows <code>git update-index foo</code> finishes, the resulting  -<code>st_mtime</code> timestamp on <code>foo</code> cannot get a value earlier  +follows <tt>git update-index foo</tt> finishes, the resulting  +<tt>st_mtime</tt> timestamp on <tt>foo</tt> cannot get a value earlier   than the index file. Therefore, index entries that can be   racily clean are limited to the ones that have the same   timestamp as the index file itself.</p></div>   <div class="paragraph"><p>The callers that want to check if an index entry matches the   corresponding file in the working tree continue to call  -<code>ce_match_stat()</code>, but with this change, <code>ce_match_stat()</code> uses  -<code>ce_modified_check_fs()</code> to see if racily clean ones are  +<tt>ce_match_stat()</tt>, but with this change, <tt>ce_match_stat()</tt> uses  +<tt>ce_modified_check_fs()</tt> to see if racily clean ones are   actually clean after comparing the cached stat information using  -<code>ce_match_stat_basic()</code>.</p></div>  +<tt>ce_match_stat_basic()</tt>.</p></div>   <div class="paragraph"><p>The problem the latter solves is this sequence:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ git update-index 'foo'  +<pre><tt>$ git update-index 'foo'   : modify 'foo' in-place without changing its size   : wait for enough time  -$ git update-index 'bar'</code></pre>  +$ git update-index 'bar'</tt></pre>   </div></div>   <div class="paragraph"><p>Without the latter, the timestamp of the index file gets a newer  -value, and falsely clean entry <code>foo</code> would not be caught by the  +value, and falsely clean entry <tt>foo</tt> would not be caught by the   timestamp comparison check done with the former logic anymore.  -The latter makes sure that the cached stat information for <code>foo</code>  +The latter makes sure that the cached stat information for <tt>foo</tt>   would never match with the file in the working tree, so later  -checks by <code>ce_match_stat_basic()</code> would report that the index entry  +checks by <tt>ce_match_stat_basic()</tt> would report that the index entry   does not match the file and Git does not have to fall back on more  -expensive <code>ce_modified_check_fs()</code>.</p></div>  +expensive <tt>ce_modified_check_fs()</tt>.</p></div>   </div>   </div>   <div class="sect1">   <h2 id="_runtime_penalty">Runtime penalty</h2>   <div class="sectionbody">  -<div class="paragraph"><p>The runtime penalty of falling back to <code>ce_modified_check_fs()</code>  -from <code>ce_match_stat()</code> can be very expensive when there are many  +<div class="paragraph"><p>The runtime penalty of falling back to <tt>ce_modified_check_fs()</tt>  +from <tt>ce_match_stat()</tt> can be very expensive when there are many   racily clean entries. An obvious way to artificially create   this situation is to give the same timestamp to all the files in  -the working tree in a large project, run <code>git update-index</code> on  +the working tree in a large project, run <tt>git update-index</tt> on   them, and give the same timestamp to the index file:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ date >.datestamp  +<pre><tt>$ date >.datestamp   $ git ls-files | xargs touch -r .datestamp   $ git ls-files | git update-index --stdin  -$ touch -r .datestamp .git/index</code></pre>  +$ touch -r .datestamp .git/index</tt></pre>   </div></div>   <div class="paragraph"><p>This will make all index entries racily clean. The linux project, for   example, there are over 20,000 files in the working tree. On my   Athlon 64 X2 3800+, after the above:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>$ /usr/bin/time git diff-files  +<pre><tt>$ /usr/bin/time git diff-files   1.68user 0.54system 0:02.22elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k   0inputs+0outputs (0major+67111minor)pagefaults 0swaps   $ git update-index MAINTAINERS   $ /usr/bin/time git diff-files   0.02user 0.12system 0:00.14elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k  -0inputs+0outputs (0major+935minor)pagefaults 0swaps</code></pre>  +0inputs+0outputs (0major+935minor)pagefaults 0swaps</tt></pre>   </div></div>  -<div class="paragraph"><p>Running <code>git update-index</code> in the middle checked the racily  -clean entries, and left the cached <code>st_mtime</code> for all the paths  +<div class="paragraph"><p>Running <tt>git update-index</tt> in the middle checked the racily  +clean entries, and left the cached <tt>st_mtime</tt> for all the paths   intact because they were actually clean (so this step took about  -the same amount of time as the first <code>git diff-files</code>). After  +the same amount of time as the first <tt>git diff-files</tt>). After   that, they are not racily clean anymore but are truly clean, so  -the second invocation of <code>git diff-files</code> fully took advantage  +the second invocation of <tt>git diff-files</tt> fully took advantage   of the cached stat information.</p></div>   </div>   </div>  @@ -910,17 +914,17 @@  <div class="olist arabic"><ol class="arabic">   <li>   <p>  -Initial <code>git add .</code> of a large project.  +Initial <tt>git add .</tt> of a large project.   </p>   </li>   <li>   <p>  -<code>git checkout</code> of a large project from an empty index into an  +<tt>git checkout</tt> of a large project from an empty index into an   unpopulated working tree.   </p>   </li>   </ol></div>  -<div class="paragraph"><p>Note: switching branches with <code>git checkout</code> keeps the cached  +<div class="paragraph"><p>Note: switching branches with <tt>git checkout</tt> keeps the cached   stat information of existing working tree files that are the   same between the current branch and the new branch, which are   all older than the resulting index file, and they will not  diff --git a/technical/send-pack-pipeline.html b/technical/send-pack-pipeline.html index 1eb59c2..59ee072 100644 --- a/technical/send-pack-pipeline.html +++ b/technical/send-pack-pipeline.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Git-send-pack internals</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -781,12 +785,12 @@  <div class="sect1">   <h2 id="_pack_objects_pipeline">Pack_objects pipeline</h2>   <div class="sectionbody">  -<div class="paragraph"><p>This function gets one file descriptor (<code>fd</code>) which is either a  +<div class="paragraph"><p>This function gets one file descriptor (<tt>fd</tt>) which is either a   socket (over the network) or a pipe (local). What’s written to   this fd goes to git-receive-pack to be unpacked.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>send-pack ---> fd ---> receive-pack</code></pre>  +<pre><tt>send-pack ---> fd ---> receive-pack</tt></pre>   </div></div>   <div class="paragraph"><p>The function pack_objects creates a pipe and then forks. The   forked child execs pack-objects with --revs to receive revision  @@ -794,12 +798,12 @@  packfile to the other end.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>send-pack  +<pre><tt>send-pack   |   pack_objects() ---> fd ---> receive-pack   | ^ (pipe)   v |  - (child)</code></pre>  + (child)</tt></pre>   </div></div>   <div class="paragraph"><p>The child dup2’s to arrange its standard output to go back to   the other end, and read its standard input to come from the  @@ -808,12 +812,12 @@  closes the reading side of the pipe and fd to receive-pack.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>send-pack  +<pre><tt>send-pack   |   pack_objects(parent)   |   v [0]  - pack-objects [0] ---> receive-pack</code></pre>  + pack-objects [0] ---> receive-pack</tt></pre>   </div></div>   <div class="paragraph"><p>[jc: the pipeline was much more complex and needed documentation before   I understood an earlier bug, but now it is trivial and straightforward.]</p></div>  diff --git a/technical/shallow.html b/technical/shallow.html index a838cbc..fd3a485 100644 --- a/technical/shallow.html +++ b/technical/shallow.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Shallow commits</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  diff --git a/technical/trivial-merge.html b/technical/trivial-merge.html index c186777..6902d61 100644 --- a/technical/trivial-merge.html +++ b/technical/trivial-merge.html 
@@ -3,7 +3,7 @@  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   <head>   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />  -<meta name="generator" content="AsciiDoc 8.6.8" />  +<meta name="generator" content="AsciiDoc 8.6.6" />   <title>Trivial merge rules</title>   <style type="text/css">   /* Shared CSS for AsciiDoc xhtml11 and html5 backends */  @@ -87,15 +87,11 @@  ul > li { color: #aaa; }   ul > li > * { color: black; }    -.monospaced, code, pre {  - font-family: "Courier New", Courier, monospace;  - font-size: inherit;  - color: navy;  +pre {   padding: 0;   margin: 0;   }    -   #author {   color: #527bbd;   font-weight: bold;  @@ -353,7 +349,7 @@  margin-bottom: 0.1em;   }    -div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {  +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {   margin-top: 0;   margin-bottom: 0;   }  @@ -411,14 +407,18 @@  span.overline { text-decoration: overline; }   span.line-through { text-decoration: line-through; }    -div.unbreakable { page-break-inside: avoid; }  -     /*   * xhtml11 specific   *   * */    +tt {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   div.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -452,6 +452,12 @@  *   * */    +.monospaced {  + font-family: monospace;  + font-size: inherit;  + color: navy;  +}  +   table.tableblock {   margin-top: 1.0em;   margin-bottom: 1.5em;  @@ -531,8 +537,6 @@  @media print {   body.manpage div#toc { display: none; }   }  -  -   </style>   <script type="text/javascript">   /*<+'])');  + var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');   // Function that scans the DOM tree for header elements (the DOM2   // nodeIterator API would be a better technique but not supported by all   // browsers).  @@ -606,7 +610,7 @@  var i;   for (i = 0; i < toc.childNodes.length; i++) {   var entry = toc.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div'  + if (entry.nodeName == 'div'   && entry.getAttribute("class")   && entry.getAttribute("class").match(/^toclevel/))   tocEntriesToRemove.push(entry);  @@ -652,7 +656,7 @@  var entriesToRemove = [];   for (i = 0; i < noteholder.childNodes.length; i++) {   var entry = noteholder.childNodes[i];  - if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")  + if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")   entriesToRemove.push(entry);   }   for (i = 0; i < entriesToRemove.length; i++) {  @@ -749,12 +753,12 @@  affect the result.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>index tree result  +<pre><tt>index tree result   -----------------------   * (empty) (empty)   (empty) tree tree   index+ tree tree  -index+ index index+</code></pre>  +index+ index index+</tt></pre>   </div></div>   </div>   </div>  @@ -772,7 +776,7 @@  affect the result.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>case index old new result  +<pre><tt>case index old new result   -------------------------------------   0/2 (empty) * (empty) (empty)   1/3 (empty) * new new  @@ -781,7 +785,7 @@  10 index+ index (empty) (empty)   14/15 index+ old old index+   18/19 index+ old index index+  -20 index+ index new new</code></pre>  +20 index+ index new new</tt></pre>   </div></div>   </div>   </div>  @@ -806,7 +810,7 @@  must be the same.</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>case ancest head remote result  +<pre><tt>case ancest head remote result   ----------------------------------------   1 (empty)+ (empty) (empty) (empty)   2ALT (empty)+ *empty* remote remote  @@ -823,7 +827,7 @@  16 anc1/anc2 anc1 anc2 no merge   13 ancest+ head ancest head   14 ancest+ ancest remote remote  -11 ancest+ head remote no merge</code></pre>  +11 ancest+ head remote no merge</tt></pre>   </div></div>   <div class="paragraph"><p>Only #2ALT and #3ALT use <strong>empty</strong>, because these are the only cases   where there can be conflicts that didn’t exist before. Note that we